前言
在异步编程中,经常需要使用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();}
本文转载自: https://blog.csdn.net/qq_41848097/article/details/140851831
版权归原作者 C# 学习者 所有, 如有侵权,请联系我们删除。
版权归原作者 C# 学习者 所有, 如有侵权,请联系我们删除。