我在CDialog类中使用了一个工作线程。
theApp.m_pWorkerThread = AfxBeginThread(Threadproc,this);
现在我需要将一个全局Inerface poiner传递给工作线程,以便从外部访问COM对象
有人可以告诉我传递GIT cookie并在线程内访问它的语法。
由于
答案 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!
感谢。