【问题标题】:Unload DLL from Memory从内存中卸载 DLL
【发布时间】:2012-10-23 18:10:06
【问题描述】:

如何从属于另一个进程的内存中卸载 DLL,或者进程已经结束但 DLL 仍然加载到内存中?

我知道如何查找现有进程,甚至为此列出所有已加载的 DLL,但我似乎不知道如何找到已加载的 DLL 并从内存中卸载它们。

我读过的所有内容都在谈论 AppDomains,但我不确定这种情况是否适用于该方法,因为我想关闭我的应用程序未调用的 DLL。

任何帮助将不胜感激。

【问题讨论】:

标签: c# .net memory dll


【解决方案1】:

我认为您不能卸载单个程序集。但是您可以卸载包含该程序集的 AppDomain。

【讨论】:

    【解决方案2】:

    除非退出进程,否则无法卸载以域中立方式加载的共享 DLL。域特定的 DLL 与域一起被卸载。但是,即使加载 DLL 仅用于反射,也无法卸载单个 DLL。

    【讨论】:

    • 所以即使最初加载 dll 的进程已经退出,我也无法卸载应用关闭/崩溃时未卸载的 dll?
    • 您是在同一进程中还是跨多个进程跨多个应用程序域使用 DLL?如果 DLL 已经以共享模式加载,除非所有 AppDomain 都卸载,否则它不会卸载。
    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2019-05-18
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    相关资源
    最近更新 更多