我们的.NET 3.5 C#应用程序创建了多个appdomains。每个appdomain加载相同的非托管第三方dll。此dll在初始化时读取配置文件。如果配置在运行时更改,则必须卸载并再次加载dll。这个dll不在我们的范围内,无法正确重写。
每个appdomain是否都可以访问此非托管dll的separtate副本,或者Windows是否保留dll的一个副本并维护使用计数?如果是后者,我们如何让非托管dll的每个实例反映其独特的配置?
答案 0 :(得分:2)
Takea看看这篇博客文章
答案 1 :(得分:0)
我认为操作系统每个进程只加载一次非托管dll,因此每个app-domain都会有相同的加载实例。要卸载DLL,请使用FreeLibrary函数。但是,由于多个app-domains可能已经加载了dll,因此无法保证来自一个app-domain的FreeLibrary将实际释放/卸载dll。
正如BillW所说,这对我来说似乎也是一场设计梦魇!