当前位置:编程学习 > C#/ASP.NET >>

关闭加载dll的程序,任务管理器依然存在!

现在有一个主界面Main,其中用反射加载了一些用usercontrol界面生成的dll,
当关闭Main.exe后,重新启动Main.exe发现所有dll界面均无法加载,查找任务管理器发现Main.exe依然存在,手动关闭Main.exe后,重新启动Main.exe,能正常加载所有dll;
问题:为什么关闭Main.exe后任务管理器依然存在?是什么原因造成的呢?是属于内存泄露吗?
我个人认为是在关闭Main后没有卸载所有利用反射加载的dll界面,那如何卸载呢?
谢谢~ --------------------编程问答-------------------- 很有可能某些线程还没有退出。

解决方法之一:把Thread标志为后台线程(thread.IsBackground = true),后台线程不会阻止当前进程的退出。
--------------------编程问答-------------------- 在Main.exe的窗体关闭事件加Environment.Exit(0) 强制关闭所有后台线程 --------------------编程问答-------------------- try

private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)
        {
            System.Environment.Exit(System.Environment.ExitCode);//程序退出前 强行结束线程
            Application.Exit();//退出应用程序
        }
--------------------编程问答-------------------- System.Diagnostics.Process.GetCurrentProcess().Kill(); --------------------编程问答-------------------- System.Diagnostics.Process.GetCurrentProcess().Kill();  --------------------编程问答--------------------
引用
在Main.exe的窗体关闭事件加Environment.Exit(0) 强制关闭所有后台线程

那产生的原因是什么呢?
--------------------编程问答--------------------
引用
try
private void Form_Main_FormClosing(object sender, FormClosingEventArgs e)         {             System.Environment.Exit(System.Environment.ExitCode);//程序退出前 强行结束线程             Application.Exit();//退出应用程序         } 


这样只能关闭任务管理器,但是无法解决根本原因。。。。
--------------------编程问答-------------------- AppDomain 可以提供dll的装载和拆卸;

线程未退出可以采用GetCurrentProcess().Kill()方法  --------------------编程问答-------------------- 强行结束所有线程然后application.exit结束
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,