zoukankan      html  css  js  c++  java
  • .Net 4.5中通过CancellationTokenSource实现对超时任务的取消

    在基于Task的任务执行过程中,我们通常使用CancellationTokenSource来实现任务取消,首先看一个简单的例子。

        var cancelTokenSource = new CancellationTokenSource();

        Task.Factory.StartNew(() =>
        {
            while (!cancelTokenSource.IsCancellationRequested)
            {
                Console.WriteLine(DateTime.Now);
                Thread.Sleep(1000);
            }
        }, cancelTokenSource.Token);

        Console.WriteLine("Press any key to cancel");
        Console.ReadLine();
        cancelTokenSource.Cancel();
        Console.WriteLine("Done");
        Console.ReadLine();

    很多时候,除了像上例中的那样手动取消外,我们往往也要对任务设置一个预期执行时间,对超时的任务自动取消。之前一般做法是新启动一个计时器,在计时器的超时回调中执行CancellationTokenSource.Cancel方法。在.Net 4.5中,该操作得到了进一步的简化,我们可以通过在创建CancellationTokenSource时设置超时来实现这一功能。

        var cancelTokenSource = new CancellationTokenSource(3000);

    除此之外,也可以通过如下代码实现同样的效果。

        cancelTokenSource.CancelAfter(3000);

     

  • 相关阅读:
    json_decode 转数组
    json_encode转义中文问题
    ECshop后台新功能权限添加
    mysql中int、bigint、smallint 和 tinyint的区别与长度的含义
    mysql数据库表设计小数类型
    mysql group_concat用法
    PHP socket通信之UDP
    本地tp项目上传服务器报runtime/cache错误
    mysql 命令一套
    linux 9 -- 交互式使用Bash Shell
  • 原文地址:https://www.cnblogs.com/TianFang/p/2620841.html
Copyright © 2011-2022 走看看