在 MSDN 中,Thread.Abort() 方法的描述是这样说的:“调用此方法通常 会终止线程。”
为什么不总是?
在哪些情况下它不会终止线程?
是否还有其他终止线程的可能性?
最佳答案
Thread.Abort()
在线程上注入(inject)一个 ThreadAbortException
。线程可以通过调用 Thread.ResetAbort()
取消请求。此外,还有某些代码部分,例如 finally
block 将在处理异常之前执行。如果由于某种原因线程被卡在这样的 block 中,则永远不会在线程上引发异常。
由于在调用 Abort()
时调用者对线程状态的控制很少,因此通常不建议这样做。而是将消息传递给请求终止的线程。
关于C# 线程终止和 Thread.Abort(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2251964/