如何使用CancellationToken取消任务?所以我有这段代码://CancellationTokenCancellationTokenSourcesrc=newCancellationTokenSource();CancellationTokenct=src.Token;ct.R??egister(()=>Console.WriteLine("AbbruchdesTasks"));//TaskTaskt=newTask(()=>{System.Threading.Thread.Sleep(1000);if(ct.IsCancellationRequested){try{//Throwct.ThrowIfCancellationRequested();}catch(OperationCanceledException){控制台.WriteLine("ThrowIfCancellationRequested()liefertebeneineException");}}},ct);//运行任务并取消t.Start();src.CancelAfter(350);t.等待();//获取信息Console.WriteLine("Canceled:{0}.Finished:{1}.Error:{2}",t.IsCanceled,t.IsCompleted,t.IsFaulted);所以在这种情况下我取消了我的任务,但最后我的输出是:“取消:假。完成:真。错误:假”在我看来它应该是“取消:真。完成:假”。为什么我会得到这个结果?因为我正在尝试捕获异常?我尝试过不使用try-catch块,但我的程序由于OperationCanceledException而停止。有人能帮我吗?您吞下了异常,因此在您实际处理异常时任务被标记为已完成,并且不会向外传播。而是不要在delegate中捕获异常,在delegate外捕获:以上是C#学习教程:如何使用CancellationToken取消任务?所有分享的内容,如果对你有用,需要了解更多C#学习教程,希望大家多多关注。CancellationTokenct=src.Token;ct.R??egister(()=>Console.WriteLine("AbbruchdesTasks"));任务t=Task.Run(()=>{System.Threading.Thread.Sleep(1000);ct.ThrowIfCancellationRequested();},ct);src.取消();尝试{t.Wait();}catch(AggregateExceptione){//实际上不要使用空的catch子句,这是为了演示。}Console.WriteLine("取消:{0}。完成:{1}。错误:{2}",t.IsCanceled,t.IsCompleted,t.IsFaulted);}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
