在Understanding COM Threading Models and Apartments from a .NET Application's perspective 这一章,你知道在创建经典COM组件之前,.NET 应用程序是怎样宣告调用线程单元辅助 。现在看一下等式的另一方面。尤其是当从非托管 COM感知应用程序创建了.NET 组件 时,.NET组件 的线程辅助被文本定义,而对象就处在这个文本中。本质上来说,一个Context就是AppDomain(轻型过程)拥有的环境 ,而对象就是在AppDomain 中创建的。每一个文本都依次拥有对象,这些对象享用公共的使用要求,例如:线程辅助、对象池化、 交易、 JIT 激活、同步等。当依靠属性的执行时要求时,而且对象也要求中断服务时,就会创建这些文本。如果这里有一个文本,此嗯本与使用规则相匹配,然后执行时就会在那个文本中提供调节。如果它没有找到一个相匹配的文本,就会为对象创建一个新文本。
前面说到,每一个AppDomain都有一个默认文本。默认文本.依次拥有Context Agnostic (Context Agile)对象。这些对象没有绑定到任何文本。Context Agile 对象不要求任何属性,特殊使用规则以及中断服务。让我们看一下下面的表格,此表格总结了基于它们自己文本敏捷度的跨文本访问方案中.NET 组件是怎样执行的
被非托管COM 感知客户端访问时的线程中立行为
当一个程序集经过REGASM.EXE,想为COM 感知客户端创建正确的注册途径时,.NET组件是怎样把它的线程模式转到COM的。