2016-05-16 105 views
1

我不明白为什么我的DLL仍然在程序的内存中后,我做了AppDomain.Unload。我可以做错什么吗?我的DLL不会卸载,即使当我卸载应用程序域

AppDomain appDomain = AppDomain.CreateDomain("MyAuthDomain"); 
appDomain.DoCallBack(load_Auth); 

var isLogin = (bool)appDomain.GetData("IsLogin"); 

AppDomain.Unload(appDomain); 

private static void load_Auth() 
{ 
    var form = new Compiler(File.ReadAllBytes(Environment.CurrentDirectory + @"\form.dll"), "form"); 
    form.InvokeMember("ShowDialog"); 

    AppDomain.CurrentDomain.SetData("IsLogin", (bool)form.GetField("IsLogin")); 
    form.Unload(); 
} 

P.S. 我如何理解该DLL仍然在内存中? NETUnpack告诉我。

回答

1

这可以帮助我

AppDomain.Unload(appDomain); 

//GC 
GC.Collect(); 
GC.WaitForPendingFinalizers(); 
GC.Collect();