我已经阅读了很多关于 COM 公寓和 .NET 互操作的内容,但我还没有找到这个问题的答案。这让我相信我可能问错了问题。
我知道 .NET 线程(如本机线程)既可以是 MTA 也可以是 STA,我找到了关于此的文档,但我很少看到关于对象及其 CCW 如何与这些公寓关联的信息。
我的猜测是 CCW 的线程模型是“Both”并且 CCW 与创建线程所属的任何一个单元相关联。
哪个公寓与 CCW 相关联,我能否控制这种行为?
我已经阅读了很多关于 COM 公寓和 .NET 互操作的内容,但我还没有找到这个问题的答案。这让我相信我可能问错了问题。
我知道 .NET 线程(如本机线程)既可以是 MTA 也可以是 STA,我找到了关于此的文档,但我很少看到关于对象及其 CCW 如何与这些公寓关联的信息。
我的猜测是 CCW 的线程模型是“Both”并且 CCW 与创建线程所属的任何一个单元相关联。
哪个公寓与 CCW 相关联,我能否控制这种行为?
.NET 实现的 COM 对象通常可以存在于任何类型的 COM 单元中。默认情况下,将 .NET 程序集注册为 COM 服务器的 .NET 方法/工具将使用 threading model = 注册 coclass Both
。
如果您想将 .NET 类公开为具有不同线程模型的 COM coclass(例如强制进入 STA),那么您需要提供自定义注册功能。