我们可以放弃这样的Thread:

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

但是我可以用同样的方式而不是通过取消机制中止Task(在.Net 4.0中)吗.I want to kill the Task immediately.

推荐答案

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

Thread.Abort()方法(严重)被弃用.

线程和任务在被停止时都应该相互配合,否则系统可能会处于不稳定/未定义的状态.

如果您确实需要运行进程并从外部终止它,唯一安全的 Select 是在单独的AppDomain中运行它.


这个答案是关于.NET3.5和更早版本的.

从那以后,线程中止处理得到了改进,a.o.通过改变最终阻塞工作的方式.

但是线.中止仍然是一个值得怀疑的解决方案,您应该始终避免.


而在.Net Core(.NET5+)中,Thread.Abort()现在将抛出PlatformNotSupportedException.

在某种程度上强调了"不受欢迎"这一点.

.net相关问答推荐

将Visual Studio更新到v17.9.3后,IDE关闭,dotnet.exe命令报告致命错误.内部CLR错误.(0x80131506)

从没有流的EventStore中读取流不存在异常

在计算Total毫秒时,.NET TimeSpan类中是否存在错误?

WinForm Task.Wait :为什么它会阻塞 UI?

正则表达式匹配 URL 中的多个子目录

dotnet ef dbcontext scaffold command --data-annotations 或 -d 命令行参数似乎不起作用

.NET 4.5 项目未在 Visual Studio 2022 中编译

MongoDB GridFs with C#,如何存储图片等文件?

无法加载文件或程序集 Microsoft.Extensions.DependencyInjection.Abstractions,版本 = 1.1.0.0

在 .NET 中获取执行 exe 路径的最佳方法是什么?

泛型方法是如何、何时、何地具体化的?

在 WPF 窗口中获取当前聚焦的元素/控件

在 .NET (C#) 中本地存储数据的最佳方式

返回 IList 是否比返回 T[] 或 List 更糟糕?

X509Certificate 构造函数异常

如何在多个解决方案之间共享相同的 Resharper 设置,无需人工干预?

.NET 的黄瓜替代品

无法加载文件或程序集Antlr3.Runtime (1)或其依赖项之一

DataContractSerializer vs XmlSerializer:每个序列化器的优缺点

绑定在代码隐藏中定义的对象