zoukankan      html  css  js  c++  java
  • C# Task 取消

    1.可在创建Task时将一个CancellationToken传给构造器,从而将两者相关联,如果CancellationToken在Task调度前取消,那么Task就会被取消,永远都不执行。
    2.但如果Task已调度,那么Task的代码就只支持显示取消,其操作才能在执行期间取消,遗憾的是,虽然Task关联了一个CancellationToken,但却没有办法访问他。
        class Program
        {
            static async Task Main(string[] args)
            {
    
                var cancelSource = new CancellationTokenSource(5000);
                //任务取消后执行
                cancelSource.Token.Register(() =>
                {
                    Console.WriteLine("Task is Cancel!");
                });
    
                await Task.Run(async () =>
                 {
                     await Task.Delay(6000);
                     var t = Task.Factory.StartNew(_ =>
                     {
                         while (true)
                         {
                             if (cancelSource.IsCancellationRequested)
                             {
                                 Console.WriteLine("任务已取消!");
                                 break;
                             }
    
                             Thread.Sleep(1000);
                             Console.WriteLine("Hello World!");
                         }
    
                     }, cancelSource.Token);
                     await t;
                 });
    
    
    
    
    
                Console.ReadKey();
            }
        }


    参考:https://www.cnblogs.com/mohanchen/p/9398031.html

    作者: jamesbing
    提示: 欢迎转载,但是必须保留本文的署名 jamesbing (包含链接)
  • 相关阅读:
    需要union
    with语法,需要递归的面试题目
    聚合主分类,子查询获得子分类
    泛型
    RepeaterInMVC
    需要自己创建集合的题目
    Ollydbg入门
    svn服务器架设
    http与svn架设服务器
    svn错误信息一览表
  • 原文地址:https://www.cnblogs.com/gaobing/p/15083846.html
Copyright © 2011-2022 走看看