如何中止/取消 TPL 任务?

2024-01-25

在一个线程中,我创建了一些System.Threading.Task并开始每项任务。

当我做一个.Abort()杀死线程,任务不会中止。

我怎样才能传输.Abort()我的任务?


你不能。任务使用线程池中的后台线程。另外,不建议使用 Abort 方法取消线程。你可以看看以下博客文章 http://blogs.msdn.com/b/csharpfaq/archive/2010/07/19/parallel-programming-task-cancellation.aspx这解释了使用取消令牌取消任务的正确方法。这是一个例子:

class Program
{
    static void Main()
    {
        var ts = new CancellationTokenSource();
        CancellationToken ct = ts.Token;
        Task.Factory.StartNew(() =>
        {
            while (true)
            {
                // do some heavy work here
                Thread.Sleep(100);
                if (ct.IsCancellationRequested)
                {
                    // another thread decided to cancel
                    Console.WriteLine("task canceled");
                    break;
                }
            }
        }, ct);

        // Simulate waiting 3s for the task to complete
        Thread.Sleep(3000);

        // Can't wait anymore => cancel this task 
        ts.Cancel();
        Console.ReadLine();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何中止/取消 TPL 任务? 的相关文章

随机推荐

  • Spark Select 与 Scala 列列表

    我正在尝试找到一种使用 List Column 进行火花选择的好方法 我正在爆炸一列 而不是通过爆炸列传回我感兴趣的所有列 var columns getColumns x Returns a List Column tempDf sele
  • 如何在 Seaborn 热图旁边添加列

    鉴于下面的代码会生成热图 我如何获得 D 列 总列 要在热图右侧显示为无颜色的列 只需对齐每个单元格的总值 我还试图将标签移到顶部 我不介意左侧的标签是水平的 因为我的实际数据不会出现这种情况 import matplotlib pyplo
  • len() 是 python 中的函数还是方法?

    在面向对象编程的上下文中 函数不同于方法 当我检查帮助文档时 这段代码 len outputs Signature len obj Docstring Return the number of items in a container Ty
  • 如何将 .gif 转换为 byte[][]?

    我正在使用一个有方法的 API public void setImage byte newImage API 参考中给出的唯一信息是 该图像的格式是简单的原始2D array字节数 每个字节代表灰度black 0 to white 255
  • 在 Windows 上的 Cmake 中链接不同的库以进行调试和发布构建?

    因此 我有一个正在编译的库 我需要链接不同的第三方内容 具体取决于它是调试还是发布版本 特别是这些库的发布或调试版本 在 Cmake 中有一个简单的方法可以做到这一点吗 编辑 我应该注意我正在使用 Visual Studio 根据CMake
  • Debian httpredir 镜像系统在 Docker 中不可靠/不可用?

    简洁版本 Debian 的httpredir debian org镜像服务导致我的 Docker 构建经常失败 因为 apt get 无法下载包或连接到服务器或类似的东西 我是唯一一个有这个问题的人吗 问题是我的 Debian 的还是 Do
  • 是否正在努力开发具有文件自动更改检测功能的面向构建的文件系统?

    我最近开始使用 Git 我发现的有趣功能之一是使用哈希来快速检测更改 另一方面 我看到构建工具 如 make ant javac 等 尝试通过检查文件的时间戳来检测源文件中的更改 这种方法的问题是 如果您从事不止一项工作 机器 你必须确保所
  • 实体框架 4.1 - 选择

    我使用以下表达式 ProductRepository Query Include Function x x ChildProducts Select Function y y PriceTiers Where Function z z Is
  • 将 csv 文件加载到 jQuery 中?

    我有一个 CSV 文件 我想将其用作 jQuery 浮点图的源数据 我是不是该 找到一个可以直接加载 CSV 文件的 jQuery 插件吗 将 CSV 文件转换为 JSON 并使用它 做一些完全不同的事情吗 我没有找到一个可以处理外部 CS
  • 如何在 C++ 中重载运算符 &

    如何在 C 中重载运算符 我试过这个 ifndef OBJECT H define OBJECT H include
  • 当 showdialogwindow 阻止我尝试访问的窗口时,是否有一个事件或我可以使用的东西

    我有 2 个窗户 我们称他们为 A 和 B A 使用 ShowDialog 打开 B 所以我正在打开 B 当用户最小化 B 或以某种方式将其放入后面并尝试再次单击窗口 A 时 它会被阻止 应该如此 但是当发生这种情况时 是否有一个我可以赶上
  • Boost Deadline_timer 导致堆栈缓冲区溢出

    最近几天 我一直被 Boost Deadline timer 的一个非常奇怪的错误困扰 桌面 Ubuntu 18 04 增强 v1 65 01 当我在类 AddressSanitizer 的构造函数中创建新的 Deadline timer
  • 如何使用 graphql-java 响应扩展?

    我来自 GraphQL 的响应必须遵循特定的格式 data errors extensions 然而 我不确定如何通过我的方法的扩展来做出响应 我正在使用 graphql spring boot 来引入 graphql java graph
  • 将 DataGrid 绑定到 ObservableCollection

    我有一个ObservableCollection
  • 用于调用 wso2 安全 Web 服务的独立 java 代码

    我在 wso2esb 上有一个安全的 Web 服务 它基于用户名令牌 现在 我想创建一个独立的 java 程序来调用此 Web 服务 我很难弄清楚如何做到这一点 你能帮我一下吗 感谢致敬 通过这种方式访问 安全的Web服务 我假设你使用UT
  • 如何在 MVC3 中托管 Web 服务?

    如何在 mvc3 中使用 Web 服务 我应该在哪里包含网络服务 对此完全陌生 请帮忙 In latest versions of VS you can click here 在打开的窗口中 您将能够输入服务地址并进行所需的配置 您可以将服
  • Github API 返回发布数组的空资产

    我正在尝试通过 gitHub api 跟踪 gitHub 版本的 download count 我不需要太多 我只是想看看它是什么 我正在尝试获取以下信息 http developer github com v3 repos release
  • 以正确的顺序从 Web 服务迭代 Json 数据

    我收到来自网络服务的响应 数据位于JSON form JSONObject event 15 00 type 1 status null appointment id null 16 00 type 1 status null appoin
  • 检查一个数组的所有元素是否都在另一个数组中

    我有这两个数组 A 1 2 3 4 5 6 7 8 9 0 And B 4 5 6 7 有没有办法检查 B 是否是 A 中具有相同项目顺序的子列表 issubset http docs python org 2 library stdtyp
  • 如何中止/取消 TPL 任务?

    在一个线程中 我创建了一些System Threading Task并开始每项任务 当我做一个 Abort 杀死线程 任务不会中止 我怎样才能传输 Abort 我的任务 你不能 任务使用线程池中的后台线程 另外 不建议使用 Abort 方法