zoukankan      html  css  js  c++  java
  • 关于CancellationToken的解释

      cancellationToken以一种token的形式来取消当前task

    例如:

    private static Int32 NumValue(CancellationToken token, Int32 n)
            {
                Int32 sum = 0;
                for (int i = 0; i < n; i++)
                {
                    token.ThrowIfCancellationRequested();
                    checked
                    {
                        sum += i;
                    }
                }
                return sum;
            }

    此方法接受了一个CancallationToken属性,使用它的ThrowIfCancellationRequested检测取消操作,若用户取消则抛出一个异常结束求和的task

    新建一个CancellationTokenSource实例,产生一个CancellationToken对象并将其传入上面的NumValue作为参数,代码如下:

    private static void TaskRun()
            {
                CancellationTokenSource tokenSource = new CancellationTokenSource();
                Task<Int32> task = Task.Run(() => NumValue(tokenSource.Token, 1000000), tokenSource.Token);
    
                //发出取消的请求
                tokenSource.Cancel();
    
                try
                {
                    Console.WriteLine("计算求和为:{0}",task.Result);
                }
                catch (AggregateException ex)
                {
                    ex.Handle(e => e is OperationCanceledException);
                    Console.WriteLine("用户已取消");
                }
            }

    调用Cancel()方法发送取消请求

    原文地址:

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

    记录编程的点滴,体会学习的乐趣
  • 相关阅读:
    xml ui
    xml ui
    xml ui
    debug
    centOS7 mini配置linux服务器(一)安装centOs7
    数据结构之__链表
    数据结构之__队列
    数据结构之__栈
    在树莓派上使用 SSD1306 OLED 屏幕
    git官方手册
  • 原文地址:https://www.cnblogs.com/AduBlog/p/13489842.html
Copyright © 2011-2022 走看看