appdomain一个很有挑战的问题,大侠们不吝赐教。。。。

blueardor 2011-09-02 04:25:06
我现在有一个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 被共享了。

怎么回事呢?什么原因造成的?有什么办法解决? 高手指点。。。。。。
...全文
140 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
moonwrite 2011-09-05
  • 打赏
  • 举报
回复
也许非托管代码的指针不受AppDomain约束,可以指向进程中的任意位置
猜的 帮顶一下 顺便围观
llsus 2011-09-05
  • 打赏
  • 举报
回复
老一个人顶太难看了,我帮你顶一下,结贴时记得给我点分。
blueardor 2011-09-05
  • 打赏
  • 举报
回复
贴子沉的怎么快,啦一把
blueardor 2011-09-02
  • 打赏
  • 举报
回复
.net 调用 com dll 我使用了com interop的方法。调用没有问题,就是不能保证 memory isolation

111,125

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧