2016-05-16 110 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();