有一个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可以正常工作。
帮帮我!!!!!
答案 0 :(得分:0)
我建议您将COM对象加载到一个或多个托管进程中。这是您可以为他们提供所需隔离类型的唯一方法。您可以自己动手,也可以查看COM +