现有一应用程序要调用进程外组件,在应用程序中的主干类不是Com的,但他有一个属性用来保存Com接口,形势如下            class CApplication
               {
                     public:
                         CComPtr<IGFSML> mGFSMLPtr; 
                     public:
                          void StartApplication()
                     private:
                          static DWORD WINAPI Process(LPVOID param)(线程)
                }                在StartApplication中调用GetEvent(CEvent *event)函数成功,但在Process中调用失败,并不是出现异常或严重错误,而是无法获得事件。由于本人对Com知识比较匮乏,请各位高手指点一下,在多线程情况下使用Com的方法,谢谢!
           

解决方案 »

  1.   

    Process是一个线程,你要初始化COM库
    CoInitialize()
    如果是自由线程,要用CoInitializeEx
      

  2.   

    当然,结束时记住要CoUninitialize
      

  3.   

    我已经在线称中使用了CoInitializeEx(NULL,COINIT_MULTITHREADED);来初始化了,要使用的是通过::CoCreateInstanceEx(CLSID_GFSML, NULL,
    CLSCTX_REMOTE_SERVER, &mtServerInfo, 1, &mtQi); 建立并且用了mGFSMLPtr.Attach((IGFSML *)mtQi.pItf);请各位高手指点。