代码之家  ›  专栏  ›  技术社区  ›  Mr. T.

多个应用程序域调用同一个非托管dll

  •  4
  • Mr. T.  · 技术社区  · 14 年前

    我们的.NET3.5c应用程序创建多个应用程序域。每个appdomain加载相同的非托管第三方dll。此dll在初始化时读取配置文件。如果配置在运行时更改,则必须卸载并重新加载dll。此dll不在我们的范围内,无法正确重写。

    每个appdomain是否都有权访问此非托管dll的单独副本,或者windows是否保留dll的一个副本并保持使用计数?如果是后者,我们如何使非托管dll的每个实例反映其唯一配置?

    2 回复  |  直到 7 年前
        1
  •  2
  •   bristows    14 年前
        2
  •  0
  •   logicnp    14 年前

    我认为操作系统在每个进程中只加载一次非托管dll,因此每个应用程序域都将具有相同的加载实例。要卸载dll,请使用freelibrary函数。但是,由于多个应用程序域可能已经加载了dll,因此无法保证来自一个应用程序域的freelibrary将实际释放/卸载dll。

    正如Billw所说,这对我来说也是一个设计噩梦!