2016-05-16 1 views
1

Je ne peux pas comprendre pourquoi ma DLL est toujours dans la mémoire du programme après avoir fait AppDomain.Unload. Puis-je faire quelque chose de mal?Ma DLL ne se déchargera pas même quand je décharger appdomain

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. Comment je comprends que la DLL reste en mémoire? NETUnpack me dit.

Répondre

1

Cela me aide

AppDomain.Unload(appDomain); 

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