使用 AfxBeginthread 传递 GlobalInterfacePointer
我在 CDialog 类中使用工作线程。
theApp.m_pWorkerThread = AfxBeginThread(Threadproc,this);
现在我需要将全局 Inerface 指针传递给工作线程,以便从外部访问 COM 对象,
有人可以告诉我传递 GIT cookie 并在线程内访问它的语法吗?
谢谢
I am using a worker thread inside a CDialog class.
theApp.m_pWorkerThread = AfxBeginThread(Threadproc,this);
Now I need to pass a global Inerface poiner to the worker thread so as to access a COM object from outside
Can someone tell me the syntax to pass the GIT cookie and access it inside the thread.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,我自己来回答这个问题
实际上可以通过三种方式来完成。我将简要介绍一种方式。
使用 atlbase.h 中的 CComGitPtr
这样做:
现在从 DWORD dwCokie = GitPtrName->Detach(); 中提取 cookie
现在将 cookie 作为结构体(可选)的内容传递到工作线程内。
一旦进入工作线程,提取 cookie,调用 CoInitilize,并实例化所需的接口指针。
作为需要编组的 COM 接口。
现在将 git cookie 传递到 GI 表并检索编组的 COM 对象。
喜欢:
谢谢。
Well, I will answer this myself
This can be done in 3 ways actually. one way I will brief.
using the CComGitPtr from atlbase.h
Do like this :
Now extract the cookie from the DWORD dwCokie = GitPtrName->Detach();
Now pass the cookie as a content of struct(optional) inside the worker thread.
Once you are inside the worker thread, extract the cookie, call CoInitilize, and instantiate the reqiuired interface pointer.
as COMInterfacethatneedMarshalling pReqd.
Now pass the git cookie to the GI table and retrieve the marshalled COM object.
like:
Thanks.