2

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

从我所有的研究来看,似乎最好的方法是设置IsBackground为 true..

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

4

1 回答 1

2

它肯定会起作用,当你的主启动退出时,CLR 会中止这样的线程。与使用 Thread.Abort() 非常相似,但减去了使用 Abort() 通常会遇到的严重故障模式。这是一个粗鲁的中止,线程本身无法阻止它。由于您从 Abort() 获得的典型问题(例如死锁),之后运行的代码将不会再运行可能会失败。除了终结者。

然而,将其称为“正确”有点牵强,线程也无法完全终止。如果它具有外部可观察的行为,这可能是有害的。就像更新数据库、通过套接字交谈或写入文件一样。这也被粗暴地打断了,可能会留下一个混乱的服务器或一个半写的文件,这可能会在以后造成麻烦。一种缓解情况是,当您的程序因未处理的异常而死时,也会发生这种情况,您希望它也不会造成麻烦。这取决于 :)

于 2013-07-26T16:24:09.190 回答