我有一些非常大的应用程序混合使用c#和j#.
有时当我关闭它时,有一些线程没有关闭,它们挂在任务管理器中,不可能从那里杀死它们.
我找到所有这些线程并将它们添加到结束事件中确实存在问题.
是否有某种方式猛烈杀死在关闭事件中由应用程序打开的所有线程?...
谢谢.
是否有一些工具可以告诉我在关闭应用程序时打开了哪些线程?
Cod*_*ray 49
这不应该发生,如果是,你试图以错误的方式解决它.
当您的应用程序退出时,.NET Framework将自动终止其IsBackground属性设置为"True"的所有线程.将每个工作线程指定为后台线程,您将不再遇到此问题.利用自动创建后台线程的BackgroundWorker类和ThreadPool类是一个更好的选择.
否则,您需要显式清理前台线程.设计合理的应用程序将执行自己的簿记,并具有确定性的结构化方法,以确保在退出Main方法之前已关闭其所有线程.如果您的线程需要正常终止,那么这就是您应该做的事情.
杀死这个过程是一个非常糟糕的主意,因为让你的线程在你的应用程序中不知不觉地运行.
您应该优雅地关闭线程,但是只希望您和其他人知道不建议但可能的方法:
在您的OnClose处理程序上:
System.Diagnostics.Process.GetCurrentProcess().Kill();
Run Code Online (Sandbox Code Playgroud)
我完全喜欢科迪·格雷的做法。
| 归档时间: |
|
| 查看次数: |
70182 次 |
| 最近记录: |