2016-05-16 16 views
1

Ich kann nicht verstehen, warum meine DLL noch im Speicher des Programms ist, nachdem ich AppDomain.Unload. Kann ich etwas falsch machen?Meine DLL wird nicht entladen, auch wenn ich appdomain entladen

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. Wie ich verstehe, dass die DLL im Speicher verbleibt? NETUnpack sagt mir.

Antwort

1

Das hilft mir

AppDomain.Unload(appDomain); 

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