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

标签 c# .net dll appdomain

我们的 .NET 3.5 C# 应用程序创建了多个应用程序域。每个应用程序域加载相同的非托管第 3 方 dll。此 dll 在初始化时读取配置文件。如果配置在运行时发生变化,则必须卸载并重新加载 dll。这个 dll 不在我们的范围内,无法正确重写。

是否每个应用程序域都可以访问此非托管 dll 的单独副本,或者 Windows 是否保留该 dll 的一个副本并维护使用计数?如果是后者,我们如何让非托管 dll 的每个实例反射(reflect)其独特的配置?

最佳答案

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

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

关于c# - 多个应用程序域调用同一个非托管 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2513828/

相关文章:

c# - VS 2015 中的连接字符串

c# - 卷影复制,以及从任意文件夹加载的混合 C# 和 C++ DLL

javascript - IE文件上传问题

c# - 无法将派生类型隐式转换为其基本泛型类型

.net - 有没有办法为元组项目指定有意义的名称?

从不同的驱动器号运行时 C++ DLL 失败

c# - 为什么此 C# 类库项目无法创建 COM 兼容 DLL?

c# - dd-MMM-yyyy 和 dd-MMM 的正则表达式?

c# - 如何从 PowerShell 调用 C# 类的索引器?

c# - 修改获取集合;枚举操作可能无法执行。异常(exception)