gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:05:52 25 4
gpt4 key购买 nike

我们的 .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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com