com在多线程中使用的问题

mul 2002-08-14 11:52:21
我在主线程中创建这个com对象并有使用,后起一工作线程,通过指针得到原有接口,但再QueryInterface其他接口老是不成功,返回错误0x8001010E(消息筛选器拒绝这个调用)。我在主线程中试着调用却是正常的,请问在多线程中使用com应注意什么问题,或是由什么必需的步骤?
谢谢
...全文
44 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rockycsdn 2002-08-15
  • 打赏
  • 举报
回复
在你的工作线程中调用初始化coInitialize()
================================================================

mul 2002-08-15
  • 打赏
  • 举报
回复
我想在工作线程中得到接口(例如pinter)不知行不行,而不是在主线程中,因为我在主线程中保存了很多接口指针(这些指针已经有效),在工作线程中要使用到,不知者该怎么做?
topikachu 2002-08-14
  • 打赏
  • 举报
回复
你的com对象线程模型是什么?
volcary 2002-08-14
  • 打赏
  • 举报
回复
看来是套间线程模式,跨线程使用COM对象需要进行编排和散集
需要使用接口IStream中转一下
定义全局变量
IStream ** pstream;
主线程
Iyourinterface * pinter;
....//得到接口
hr=::CoMarshalInterThreadInterfaceInStream(IID_IDispatch,pinter,pstream);//将接口编排入pstream中
子线程
Iyourinterface * pinter;
hr=::CoGetInterfaceAndReleaseStream(*pstream,IID_IDispatch,(void **) &pinter);//将接口散集出来

这里假设你的接口类型是支持双接口的(IDispatch)



3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧