appdomain一个很有挑战的问题,大侠们不吝赐教。。。。
我现在有一个COM DLL(VC6.0 ATL wizard build), 我想利用appdomain的特性实现一个进程中创建多个appdomain,每一个都调用这个COM DLL,但是要保证每个COM DLL 不共享内存。
例如
AppDomain Domain1 = AppDomain.CreateDomain("D2");
AppDomain Domain = AppDomain.CreateDomain("D1");
非托管代码
object obj = Domain.CreateInstanceFromAndUnwrap("UnManagedDLL.dll", "UnManagedDLL.ShowTag");
object obj1 = Domain1.CreateInstanceFromAndUnwrap("UnManagedDLL.dll", "UnManagedDLL.ShowTag")
托管
object obj2 = Domain.CreateInstanceFromAndUnwrap("ManagedDLL.dll", "ManagedDLL.ShowTag");
object obj3 = Domain1.CreateInstanceFromAndUnwrap("ManagedDLL.dll", "ManagedDLL.ShowTag")
在dll中都放了一个global value,运行一次++,
我发现托管代码可以保证DLL 加载在2个appdomain,不共享内存,这个global value 单独计算。而非托管的代码会共享,这个global value 被共享了。
怎么回事呢?什么原因造成的?有什么办法解决? 高手指点。。。。。。