4

我已经阅读了很多关于 COM 公寓和 .NET 互操作的内容,但我还没有找到这个问题的答案。这让我相信我可能问错了问题。

我知道 .NET 线程(如本机线程)既可以是 MTA 也可以是 STA,我找到了关于此的文档,但我很少看到关于对象及其 CCW 如何与这些公寓关联的信息。

我的猜测是 CCW 的线程模型是“Both”并且 CCW 与创建线程所属的任何一个单元相关联。

哪个公寓与 CCW 相关联,我能否控制这种行为?

4

1 回答 1

4

.NET 实现的 COM 对象通常可以存在于任何类型的 COM 单元中。默认情况下,将 .NET 程序集注册为 COM 服务器的 .NET 方法/工具将使用 threading model = 注册 coclass Both

如果您想将 .NET 类公开为具有不同线程模型的 COM coclass(例如强制进入 STA),那么您需要提供自定义注册功能

于 2012-10-09T09:04:05.763 回答