0

有一个COM DLL(VC6.0 ATL 向导内置),我想用appdomain的身份来实现一个进程创建多个appdomain,每个进程都加载这个COM DLL,保证每个COM DLL都有独立的内存空间。</p>

例如

AppDomain Domain1 = AppDomain.CreateDomain("D1"); AppDomain Domain2 = AppDomain.CreateDomain("D2");

对象 obj1 = Domain1.CreateInstanceFromAndUnwrap("UnManagedCOMDLL.dll", "UnManagedCOMDLL.ShowTag");

对象 obj2 = Domain2.CreateInstanceFromAndUnwrap("UnManagedCOMDLL.dll", "UnManagedCOMDLL.ShowTag")

在这个dll中,有一个全局变量,每次加载时,it++。虽然com加载在不同的appdomain中,但全局变量是相互共享的。

为什么会发生这样的结果?appdomain 应该保持内存隔离,但它失败了。

但是,对于托管 dll,appdomain 可以工作。

帮我!!!!!

4

1 回答 1

0

我建议您将 COM 对象加载到一个或多个托管进程中。这是您可以为他们提供您正在寻找的隔离类型的唯一方法。你可以自己动手,或者看看 COM+

于 2011-09-08T12:25:25.640 回答