0

我想从 XPCOM Component 创建一个线程......这是一个代码

nsresult rv = NS_OK;
    nsCOMPtr<Callback> obj = do_CreateInstance("@jscallback.p2psearch.com/f2f;1", &rv);
    NS_ENSURE_SUCCESS(rv, rv);
    char* str="Hello from C++";
    obj->Status(str);
    _beginthread( (void(*)(void* ))&(P2P::test), 0,obj);

    return NS_OK;//obj->Status(str);

这是一个线程函数

当我在调用线程之前调用函数时它可以工作但是一旦我写了像obj->Status(temp);Firefox 这样的东西就会在函数上崩溃这个调用

class P2P{
    static char RecvBuf[1024];
public:
    static void test(Callback* obj){
    //  char* temp="Hellllllooo";
    //  obj->Status(temp);
  return;
}

};
4

1 回答 1

1

当开始线程的代码超出范围时,nsCOMPtr 将释放对象,将其引用计数设为零。此时,对象将被删除。在超出范围之前,您需要调用 NS_ADDREF(并确保在完成后调用 NS_RELEASE,以免泄漏!)。

于 2009-10-01T17:58:59.177 回答