多线程里调用CreateInstance失败
DWORD WINAPI Func(LPVOID lpParameter) { CoInitialize(NULL); //我之前查的说调用一下这个函数就好了,但是还是不行。。。 ClassA m_A; //就是创建这个对象的时候卡住了。 while(true) { WaitForSingleObject(g_hEvent3,INFINITE); //... SetEvent(g_hEvent3); } CoUninitialize(); return 0; }
多线程函数如上,会卡在创建对象的那一步。ClassA的构造函数里有这样两句
C/C++ code?123 CoInitialize(NULL);//初始化com环境 HRESULT hr = m_pCore.CreateInstance(L"FRRJIf.Core");
我用断点试了一下发现好像就是卡在CreateInstance这个地方了,都不返回。 如果把创建对象那一步放在线程函数外面就可以成功创建,但是在线程函数里调用对象方法就会出错。。。
COM对象是否支持多线程 在MFC中使用 CoInitializeEx(NULL,COINIT_MULTITHREADED); 没问题
|