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

问题描述 投票:4回答:2

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

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

c# .net dll appdomain
2个回答
2
投票

0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.