我有一个调用 C++ COM 对象的 .Net 类,该对象又调用 COM 中的另一个 .Net 类。 我发现这两个 .Net 类位于不同的应用程序域中(这给 log4net 带来了一些麻烦)。请注意,它们在同一个线程中。
这是为什么? 有没有办法确保它们在同一个应用程序域中?
最佳答案
调用作为 COM 公开的 .NET 类需要对数据进行编码(marshal)处理。 AppDomains 分离数据访问。当您调用 COM 组件(无论它是 .NET 应用程序)时,您必须将其放入沙盒中。在 .NET 中,沙盒使用不同的 AppDomain。
关于multithreading - COM 互操作中的应用程序域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1091233/