1

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

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

var instance = new 3PartyComStaLib()

多个线程在做

instance.doWork();

如果是真的,这可以吗,唯一的惩罚是它会很慢?

4

1 回答 1

3

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

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

于 2013-07-17T09:42:27.120 回答