繁体   English   中英

正确的方法关闭前台线程

[英]Correct way to close a foreground thread

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

根据我的所有研究,似乎最好的方法是将IsBackground设置为true。

这是正确的还是有更好的方法? 我对此表示怀疑,因为它似乎没有遵循Microsoft通常描述性的方法名称模式。

它肯定会工作,当您的主启动退出时,CLR将中止类似的线程。 与使用Thread.Abort()非常相似,减去使用Abort()通常会遇到的严重故障模式。 这是一个不礼貌的中止,线程本身无法停止它。 而且,由于您从Abort()获得的典型问题(如死锁),以后不会再运行任何可能失败的代码。 除了终结器。

然而,称它为“正确”有点费劲,线程也无法做任何干净地终止的事情。 如果它具有外部可观察到的行为,则可能是有害的。 就像更新dbase,通过套接字交谈或写入文件一样。 这也被粗暴地打断了,有可能留下混乱的服务器或半写的文件,这可能会在以后引起麻烦。 减轻影响的情况是,当程序因未处理的异常而死亡时,也会发生这种情况,您希望它也不会引起麻烦。 这取决于 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM