正确关闭前台线程的方法

时间:2013-07-26 15:55:54

标签: c# multithreading

关闭应用程序时,同时关闭前台线程的最佳方法是什么?

从我的所有研究中,似乎最好的方法是将IsBackground设置为真..

这是正确的还是有更好的方法?我持怀疑态度,因为它似乎没有遵循微软通常描述性的方法名称模式。

1 个答案:

答案 0 :(得分:1)

当你的主要启动退出时,CLR将中止一个类似的线程。非常类似于使用Thread.Abort(),减去使用Abort()通常会遇到的严重失败模式。这是一个粗鲁的中止,线程本身无法阻止它。并且没有更多的代码在之后运行,由于您从Abort()获得的典型问题(如死锁)可能会失败。除了终结者之外。

然而,将它称为“正确”是一种延伸,线程也无法彻底终止。如果它具有外部可观察的行为,那么这可能是有害的。就像更新dbase,通过套接字交谈或编写文件一样。这也是粗暴的中断,可能会留下一个混乱的服务器或半写的文件,以后可能会引起麻烦。一个缓解的情况是,当你的程序在一个未处理的异常上死亡时,这也会发生,你也希望它不会引起麻烦。这取决于:))