【问题标题】:AppDomain(s) and unmanaged dllAppDomain(s) 和非托管 dll
【发布时间】:2013-10-09 16:18:29
【问题描述】:

是否也可以使用多个 AppDomain 来隔离非托管 dll 中的内存? 只是为了澄清一下,如果我有一个使用一些内部静态全局变量的非托管 dll,如果我在不同的应用程序域中加载该非托管 dll 会发生什么?我可以安全地假设 dll 将在不同的地址空间中加载,因此它们拥有自己的共享数据副本吗?

【问题讨论】:

    标签: unmanaged appdomain


    【解决方案1】:

    不,这是不可能的。 AppDomain 是纯托管的概念。非托管 DLL 状态是进程范围的,并且只能加载一份 DLL 副本。一种可能的技巧是创建具有不同名称的 DLL 文件的副本。然而,它的扩展性很差,而且 pinvoke 很讨厌,必须编写委托并使用 LoadLibrary + GetProcAddress 来绑定它们。

    更简洁的替代方法是使用单独的帮助程序来加载 DLL。使用 WCF 等互操作机制与他们交谈。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 2017-10-16
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多