0


C# 组合CancellationTokenSource的使用

前言

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

组合CancellationTokenSourced的使用

//创建两个cts(一个手动取消,一个超时取消)CancellationTokenSource cancellCts=newCancellationTokenSource();CancellationTokenSource timeOutCts =newCancellationTokenSource(1000);//将两个cts组合CancellationTokenSource compositeCts = CancellationTokenSource.CreateLinkedTokenSource(cancellCts.Token, timeOutCts.Token);try{//执行异步耗时任务awaitDoLongTimeTask(compositeCts.Token)}catch(OperationCanceledException){if(cancellCts.Token.IsCancellationRequested){//手动取消 thrownewOperationCanceledException();}elseif(timeOutCts.Token.IsCancellationRequested){//超时取消thrownewTimeoutException();}}finally{
    cancellCts.Dispose();
   timeOutCts.Dispose();
   compositeCts.Dispose();}
标签: c# 异步 超时

本文转载自: https://blog.csdn.net/qq_41848097/article/details/140851831
版权归原作者 C# 学习者 所有, 如有侵权,请联系我们删除。

“C# 组合CancellationTokenSource的使用”的评论:

还没有评论