COM线程模型 - MTA接口 (传递MTA COM对象给STA套间线程)

接上篇,能否把一个MTA套间里面创建的COM对象传递个STA套间呢?看MSDN上的说明:

A client or server that supports both single-threaded and multithreaded apartments will have one multithreaded apartment, containing all threads initialized as free-threaded, and one or more single-threaded apartments. Interface pointers must be marshaled between apartments but can be used without marshaling within an apartment. Calls to objects in a single-threaded apartment will be synchronized by COM. Calls to objects in the multithreaded apartment will not be synchronized by COM.

上面这段文字已经说的很清楚了。我们不可以直接把一个COM对象传递一个另外一个套间。换句话说,只要涉及跨套间,就一定要marshal。

所以前面一篇文章的例子里面,如果辅助线程初始化成STA,那么就不能直接传递COM对象指针了,需要marshal。但是如果辅助线程也是MTA,那么就没有关系了,因为辅助线程和主线程都在MTA里面,同一个套间,无需marshal。

那么如果辅助线程并不属于某个套间,而是一个普通线程呢?

我找到了这些资料:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值