使用COM公寓STA

时间:2013-07-17 09:33:32

标签: com sta

在阅读了关于这个主题的大部分主题后,我仍然感到困惑。

如果我在.Net中的多个线程中使用COM STA DLL的实例,COM技术是不是会使用队列序列化呼叫?

var instance = new 3PartyComStaLib()

多个线程在做

instance.doWork();

如果是真的,那会没关系,唯一的惩罚是它会慢吗?

1 个答案:

答案 0 :(得分:3)

对STA对象的COM调用将被序列化,前提是您不会违反规则。特别是,您必须确保代码不会跨公寓边界传递原始COM指针。

当你的STA代码需要将COM指针传递给另一个线程和公寓时,你需要编组指针(例如使用奇妙命名的CoMarshalInterThreadInterfaceInStream API),然后在目标流上解组,给COM机会创建代理/存根对并设置有问题的序列化。