我一直在阅读关于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方法/工具将使用线程模型= Both
来注册coclasses。
如果您想将.NET类公开为带有不同线程模型(例如强制为STA)的COM coclass,则需要提供定制的注册函数。