关闭前台线程的正确方法
本文关键字:方法 线程 前台 | 更新日期: 2023-09-27 18:25:01
关闭应用程序时,同时关闭前台线程的最佳方式是什么?
从我所有的研究来看,似乎最好的方法是将IsBackground
设置为true。。
这是正确的还是有更好的方法?我对此持怀疑态度,因为它似乎并没有遵循微软通常的描述性方法名称模式。
它肯定会起作用,CLR会在主启动退出时中止这样的线程。与使用Thread.Artrt()非常相似,减去了使用Abort()通常会遇到的严重故障模式。这是一个粗鲁的中止,线程本身无法阻止它。之后运行的代码也不会因为abort()中的典型问题而失败,比如死锁。除终结器之外。
然而,称其为"正确"有点牵强,线程也无法干净地终止。如果它有外部可观察的行为,这可能是有害的。就像更新数据库、通过套接字进行对话或编写文件一样。这也被粗暴地打断了,可能会留下一个混乱的服务器或一个写了一半的文件,这可能会在以后造成麻烦。一个缓和的情况是,当你的程序因未处理的异常而死亡时,也会发生这种情况,你希望它也不会造成麻烦。这取决于:)