C# 组合CancellationTokenSource的使用

server/2024/10/21 5:31:47/

前言

异步编程中,经常需要使用CancellationToken来取消任务的执行。
但是通常情况下,一个耗时任务还需要有超时机制。那个如何让一个任务既可以超市自动取消也可以手动取消?

组合CancellationTokenSourced的使用

//创建两个cts(一个手动取消,一个超时取消)
CancellationTokenSource cancellCts= new CancellationTokenSource();
CancellationTokenSource timeOutCts = new CancellationTokenSource(1000);
//将两个cts组合
CancellationTokenSource compositeCts = CancellationTokenSource.CreateLinkedTokenSource(cancellCts.Token, timeOutCts.Token);
try
{//执行异步耗时任务await DoLongTimeTask(compositeCts.Token)
}
catch (OperationCanceledException)
{if (cancellCts.Token.IsCancellationRequested){   //手动取消 throw new OperationCanceledException();}else if (timeOutCts.Token.IsCancellationRequested){//超时取消throw new TimeoutException();}
}
finally
{cancellCts.Dispose();timeOutCts.Dispose();compositeCts.Dispose();
}

http://www.ppmy.cn/server/95827.html

相关文章

【必看!】阿里云推出QWen-7B和QWen-7b-Chat,开放免费商用!

阿里云于8月3日宣布开源两款重要的大型模型——QWen-7B和QWen-7b-Chat。这两款模型的参数规模达到了令人瞩目的70亿,并且已经在Hugging Face和ModelScope平台上开放,并可免费商用。以下是相关链接: GitHub项目主页:https://githu…

MySQL索引及索引的优化策略

1.什么是索引? 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息 2.为什么使用索引: 1.高效性:利用索引可以提高数据库的查询效率 2.唯一性:索引可以确保所查的数据的唯一…

高等数学精解【3】

文章目录 线性方程组齐次线性方程组高阶行列式 参考文献 线性方程组 齐次线性方程组 含有两个三元齐次线性方程的方程组 两个三元齐次线性方程通常指的是形如: a 1 x b 1 y c 1 z 0 a 2 x b 2 y c 2 z 0 a_1x b_1y c_1z 0 \\a_2x b_2y c_2z 0 a1​xb…

力扣1202.交换字符串中的元素

力扣1202.交换字符串中的元素 并查集 multiset&#xff1a;允许重复&#xff0c;并自动排序 class Solution {vector<int> vec;public:string smallestStringWithSwaps(string s, vector<vector<int>>& pairs) {unordered_map<int,multiset<cha…

函数实例讲解(三)

文章目录 常用的三个数学函数1、绝对值函数ABS2、取整数部分INT3、求余数函数MOD 求极值函数max、min1、Max2、Min 附加条件下求平均数1、AVERAGE2、AVERAGEIF3、AVERAGEIFS VLOOKUP与COLUMN1、VLOOKUP2、COLUMN 查找函数LOOKUP1、基础语法2、向量形式3、数组形式 常用的三个数…

什么是蠕虫病毒,如何防护蠕虫病毒?

蠕虫病毒&#xff08;Worm Virus&#xff09;是一种能够自我复制并传播的恶意软件&#xff0c;类似于计算机系统中的病毒&#xff0c;但蠕虫病毒有着更强大的传播能力和毁坏性。蠕虫病毒能够在网络中迅速传播、感染其他计算机和系统&#xff0c;给网络安全带来巨大威胁。蠕虫病…

Mojo值的生命周期(Death of a value)详解

一旦不再使用某个值/对象,Mojo 就会将其销毁。Mojo 不会等到 代码块结束(甚至不会等到表达式结束)才销毁未使用的值。它使用在每个子表达式之后运行的“尽快”(ASAP)销毁策略来销毁值。即使在像这样的表达式中a+b+c+d,Mojo 也会在不再需要中间值时立即销毁它们。 Mojo 使…

Flink学习之Flink SQL

Flink SQL 1、SQL客户端 1.1 基本使用 启动yarn-session yarn-session.sh -d启动Flink SQL客户端 sql-client.sh--退出客户端 exit;测试 重启SQL客户端之后&#xff0c;需要重新建表 -- 构建Kafka Source -- 无界流 drop table if exists students_kafka_source; CREATE TABL…