实现IDispatch的Com组件,线程模型是怎么样的?(百分问题)

tianhy 2003-08-25 11:54:32
客户端调用CreateDispatch()的时候,没有指明是STA还是MTA啊?有人清楚这个问题吗?请帮忙,谢谢
...全文
83 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
luohualiushui 2003-08-26
  • 打赏
  • 举报
回复
"好像一般直接通过CreateDispatch()就创建了"
不对,肯定初始化com库才行
vc可以调用AfxOleInit进行初始化

然后,组件存在的线程模型就是调用CreateDispatch()的线程模型
至于是不是线程安全的,那就是另外一回事了
cheng_young 2003-08-25
  • 打赏
  • 举报
回复
使用什么线程模型是由Com组件自己决定的, 在注册表的InprocServer32\ThreadingModel可查到
tianhy 2003-08-25
  • 打赏
  • 举报
回复
恩 这个我知道,可是客户端调用一般的COM要指定是STA模式还是MTA模式,通过CoInitializeEx(NULL,COININ_APARTMENTTHREADED)
CoInitializeEx(NULL,COININ_MULTITHREADED)
的不同来决定COM的线程模型。

可是对与实现IDispatch的组建,好像一般直接通过CreateDispatch()就创建了,没有经过上面一步指定线程模型。用CreateDispatch()产生COM,到底是STA模式,还是MTA模式呢?

3,245

社区成员

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

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