【发布时间】:2010-03-25 07:56:54
【问题描述】:
我们的 .NET 3.5 C# 应用程序创建多个应用程序域。每个 appdomain 加载相同的非托管第 3 方 dll。此 dll 在初始化时读取配置文件。如果在运行时配置发生变化,则必须卸载并重新加载 dll。这个dll不在我们正确重写的范围内。
每个 appdomain 是否都可以访问此非托管 dll 的单独副本,或者 Windows 是否保留一个 dll 副本并维护使用计数?如果是后者,我们如何让非托管dll的每个实例反映其独特的配置?
【问题讨论】:
-
当你说“加载”时,你的意思是通过
LoadLibrary吗? -
建议您多说一下配置文件更改的确切情况:它发生了什么变化:您是否暗示您在任意时间间隔创建一个新的应用程序域,然后读取可能已被更改的配置文件由正在进行的应用程序更改?所以任何时候配置文件发生变化,所有用以前的配置文件加载的dll都必须被卸载并重新加载?因此,当通知配置文件已更改时,给定的 'dll 无法重新配置自己?听起来像是一场设计噩梦。
-
Leppie - “加载”我的意思是 LoadLibrary。 BillW - 我同意,这是一个超出我们控制范围的设计噩梦。我们现在需要使用它。每当用户需要在“项目”之间切换时,配置文件就会发生变化(在这种情况下并不重要),并且随时可能发生。