GlobalInterfacePointer使用AfxBeginthread传递

时间:2010-08-30 09:14:21

标签: multithreading visual-c++ com marshalling

我在CDialog类中使用了一个工作线程。

 theApp.m_pWorkerThread = AfxBeginThread(Threadproc,this);

现在我需要将一个全局Inerface poiner传递给工作线程,以便从外部访问COM对象

有人可以告诉我传递GIT cookie并在线程内访问它的语法。

由于

1 个答案:

答案 0 :(得分:0)

好吧,我会自己回答

实际上可以通过3种方式完成。我会简要介绍一下。

使用atlbase.h的CComGitPtr

这样做:

  

CComGitPtr   GitPtrName(指向初始化的指针)   接口)

现在从DWORD中提取cookie dwCokie = GitPtrName-> Detach();

现在将cookie作为struct(可选)内容传递给工作线程。

进入工作线程后,提取cookie,调用CoInitilize,并实例化所需的接口指针。

作为COMInterfacethatneedMarshalling pReqd。

现在将git cookie传递给GI表并检索已编组的COM对象。

喜欢:

    // This is done inide the thread
    // retrieve the passed cookie as dwCookie
    CComGITPtr<COMInterfacethatneedMarshalling
     

pToGITTest(dwCookie);           COMInterfacethatneedMarshalling pReqd;           pToGITTest.CopyTo(安培; pReqd);

   Now we have pToGITTest inside the thread, fully marshalled, go ahead and enjoy!

感谢。