首页 > 编程语言 >C# 取消一个异步

C# 取消一个异步

时间:2022-10-19 15:36:23浏览次数:36  
标签:异步 Console CancellationToken C# IsCancellationRequested 取消 WriteLine ct

CancellationTokenSourceCancellationToken。 包含命名空间:using System.Threading.Tasks;

class CancellationPractice
{
    static void Main()
    {
        CancellationTokenSource cts = new CancellationTokenSource();
        CancellationToken token = cts.Token;

        Myclass mc = new Myclass();
        Task t = mc.RunAsync(token);

        //Thread.Sleep(1000);
        //cts.Cancel();

        t.Wait();
        Console.WriteLine($"Was Canceled:{token.IsCancellationRequested}");
        Console.ReadKey();
    }
}

class Myclass
{
    public async Task RunAsync(CancellationToken ct)
    {
        if (ct.IsCancellationRequested) return;
        await Task.Run(() => CycleMethod(ct), ct);
    }

    void CycleMethod(CancellationToken ct)
    {
        Console.WriteLine("开始执行 CyleMethod");
        const int max = 5;
        for (int i = 0; i < max; i++)
        {
            if (ct.IsCancellationRequested) return;
            Thread.Sleep(2000);
            Console.WriteLine($"    {i + 1} of {max} 循环完成。");
        }
    }
}

取消主函数的两行注释后的输出:

开始执行 CyleMethod
    1 of 5 循环完成。
Was Canceled:True

可见只完成了一项任务。




参考:

《C# 图解教程》异步

标签:异步,Console,CancellationToken,C#,IsCancellationRequested,取消,WriteLine,ct
From: https://www.cnblogs.com/huvjie/p/16806374.html

相关文章

  • 系统日志防黑简单加固(lsattr、chattr)
    0x01命令简单介绍文件查看命令()lsattr:查看文件的扩展属性,如果文件被chattr+i  添加了写保护, 用lsattr可以看到添加的属性ls:  ls-a查看所有文件    ......
  • 记录一次阿里云ECS搭建代理服务器的过程
    [参考资料](Tinyproxy安装与配置(ip代理)-林先生(downdawn.com))1.一键安装脚本vimproxy.sh#!/bin/bash#配置文件CONFIG_FILE="/etc/tinyproxy/tinyproxy.con......
  • Redux and React
        ......
  • CountDownLatch
    //批量修改if(CollectionUtils.isNotEmpty(updateKsxxList)){intoneBatch=MagicNumber.ONE_HUNDRED;inttimes=updateKsxxLis......
  • 《ASCE1885的武术》---搬头
    击敌之前温文尔雅,击敌之时如雷似火,这也是江湖打斗的特色之一。甲乙对峙凶残打斗,甲先用轻声软语稳住乙。要知道,一连串的“对不起!对不起!”会使乙凶心顿敛,一连串“老师傅,老师傅......
  • 《ASCE1885的设计模式》---观察者模式
    观察者模式定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。这一模式镇中关键对象是目标(subject)和观察者(observer)。......
  • ServletConfig对象
    ServletConfig对象作用ServletConfig对象:主要是用于加载servlet的初始化参数。在一个web应用可以存在多个ServletConfig对象(一个Servlet对应一个ServletConfig对象)......
  • centos8(linux):通过源码编译安装imagemagick7(ImageMagick 7.1.0-51)
    一,ImageMagick的相关文档:1,官网:https://imagemagick.org/2,下载页https://imagemagick.org/script/download.php#linux如图:说明:刘宏缔的架构森林是一个......
  • 566 JDBCTemplate_快速入门 and 567 JDBCTemplate_执行DML语句
    JDBCTemplate_快速入门步骤导入jar包创建JDBCTemplate对象,依赖于数据源DataSourrcejdbcTemplatetemplate=newJDBCTemplate(ds);调用JDBCTemplate的方法来完......
  • Java程序员必会Synchronized底层原理剖析
    synchronized作为Java程序员最常用同步工具,很多人却对它的用法和实现原理一知半解,以至于还有不少人认为synchronized是重量级锁,性能较差,尽量少用。但不可否认的是synchron......