几个appdomains调用相同的非托管DLL

时间:2010-03-25 07:56:55

标签: c# .net dll appdomain

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

每个appdomain是否都可以访问此非托管dll的separtate副本,或者Windows是否保留dll的一个副本并维护使用计数?如果是后者,我们如何让非托管dll的每个实例反映其独特的配置?

2 个答案:

答案 0 :(得分:2)

Takea看看这篇博客文章

Explanation of Processes and AppDomains

答案 1 :(得分:0)

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

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