appdomain加载一个com dll多次并保持内存隔离

时间:2011-09-05 02:21:10

标签: memory dll com appdomain isolation

有一个COM DLL(内置VC6.0 ATL向导),我想使用appdomain的身份来实现一个进程创建多个appdomain,每个加载这个COM DLL并确保每个COM DLL都有隔离的内存空间。

例如

AppDomain Domain1 = AppDomain.CreateDomain(“D1”);   AppDomain Domain2 = AppDomain.CreateDomain(“D2”);

object obj1 = Domain1.CreateInstanceFromAndUnwrap(“UnManagedCOMDLL.dll”,“UnManagedCOMDLL.ShowTag”);

object obj2 = Domain2.CreateInstanceFromAndUnwrap(“UnManagedCOMDLL.dll”,“UnManagedCOMDLL.ShowTag”)

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

为什么会出现这样的结果? appdomain应该保持内存iasolation,但它失败了。

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

帮帮我!!!!!

1 个答案:

答案 0 :(得分:0)

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