1

我不明白为什么在我执行 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();
}

PS 我如何理解DLL保留在内存中?NETUnpack 告诉我。

4

1 回答 1

1

这对我有帮助

AppDomain.Unload(appDomain);

//GC
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
于 2016-05-17T07:48:44.907 回答