C# 线程终止和 Thread.Abort()

标签 c# .net multithreading

在 MSDN 中,Thread.Abort() 方法的描述是这样说的:“调用此方法通常 会终止线程。”

为什么不总是?

在哪些情况下它不会终止线程?

是否还有其他终止线程的可能性?

最佳答案

Thread.Abort() 在线程上注入(inject)一个 ThreadAbortException。线程可以通过调用 Thread.ResetAbort() 取消请求。此外,还有某些代码部分,例如 finally block 将在处理异常之前执行。如果由于某种原因线程被卡在这样的 block 中,则永远不会在线程上引发异常。

由于在调用 Abort() 时调用者对线程状态的控制很少,因此通常不建议这样做。而是将消息传递给请求终止的线程。

关于C# 线程终止和 Thread.Abort(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2251964/

相关文章:

c# - 如何用不同的颜色为 RichTextBox 中的不同单词着色?

c# - 如何保护 .net 类库使其不能被其他应用程序引用?

c# - 一个类型的多个索引属性?

java - 同步方法中的 for 循环

c# - 如何解决此 "Resource name is not a valid identifier"编译器警告

c# - 将行添加到数据库中,获取 ID 并填充第二个表

java - 等待/锁定/无阻塞和OOC方法示例

c++ - ICU 正则表达式 - 多线程使用场景中的内存损坏

c# - 为什么不能使用 = 运算符设置 DbContextOptions?

c# - 从 Dictionary<string, string> 获取第一个键