我已经看到了一些具有类似这样的线程过程的示例.
private void ThreadProc() { while (serviceStarted) { // do some work Thread.Sleep(new TimeSpan(0, 0, 5)); } Thread.CurrentThread.Abort(); }
最后Abort()
真的有必要吗?
反对召唤有很多论据 Abort()
一旦程序退出 - 预计它已经自行清理.
调用Abort()
抛出异常,这通常比退出过程更耗费资源.
我想解释为什么这是一个好的做法或者不是一个好的做法.
调用Thread.Abort()
确实会引发异常,如果您正在编写将被重用的代码(或基础库的一部分),则其他开发人员很难处理ThreadAbortExcpetion
s.
本文将介绍可靠性最佳实践.
我总是听说调用Thread.Join()
是一种更好的方法,如果你可以等到线程完成处理.
我不知道是否有人认为这是一个好习惯.它可能导致死锁(因为抛出异常时未正确清理非托管资源)
这是关于它的另一篇文章,以及处理该问题的其他方法.