一尘不染

是否可以像中止线程(Thread.Abort方法)一样中止任务?

c#

我们可以中止这样的线程:

Thread thread = new Thread(SomeMethod);
.
.
.
thread.Abort();

但是我可以通过取消机制以相同的方式中止任务(在.Net 4.0中)。 我想立即杀死任务。


阅读 400

收藏
2020-05-19

共1个答案

一尘不染

  1. 您不应该使用Thread.Abort()
  2. 任务可以被取消,但不能中止。

Thread.Abort的()方法是(严重)弃用。

线程和任务在停止时均应配合使用,否则可能会使系统处于不稳定/未定义状态。

如果确实需要运行一个Process并从外部将其杀死,则唯一安全的选择是在单独的AppDomain中运行它。


此答案是关于.net 3.5及更早版本的。

从那时起,线程中止处理得到了改进,方法是更改​​最终阻塞的方式。

但是Thread.Abort仍然是可疑的解决方案,您应该始终避免这样做。

2020-05-19