2012-10-23 111 views
3

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

我知道如何找到现有的进程,甚至列出所有加载的DLL的,但我似乎无法得到的是如何找到加载的DLL并从内存中卸载它们。

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

任何帮助,将不胜感激。

+0

要做到这一点,我用MAF,你可以阅读更多关于MAF [这里] [1] [1]:http://stackoverflow.com/questions/835182/choosing-between-mef- and-maf-system-addin –

回答

1

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

0

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

+0

因此,即使在第一个地方加载dll的进程已退出,我无法卸载应用程序关闭/崩溃时未卸载的dll。 – user1769189

+0

您是否在同一进程中的多个应用程序域或跨多个进程使用DLL?如果DLL已经以共享模式加载,除非所有AppDomain卸载,否则它不会卸载。 – jags