簡體   English   中英

C#:如何在task.continuewith中捕獲取消異常

[英]C#: How to catch cancellation exception in task.continuewith

我嘗試了許多方法,但是未能捕獲task.ContinueWith中的取消異常。 這里有什么問題嗎:

 CancellationTokenSource tokenSource = new CancellationTokenSource();
 Task task = new Task( ()=> { Thread.Sleep(1000); Console.WriteLine("in task!"); }, tokenSource.Token);

 task.Start();
 tokenSource.Cancel();
 task.ContinueWith(t =>
 {
      if(t.IsCanceled)
      {
           AggregateException e = t.Exception; 
           if(e == null) // is true
                Console.WriteLine("Cancelled: ");
      }
 });

 Console.Read();

輸出為:

取消:

這意味着已捕獲取消異常,但異常本身為空。 我的問題是如何在這里獲取取消例外?

謝謝

德里克

在您取消CancellationToken時,取消異常不會自動引發,如果您不會自己拋出異常,則任務將被取消,但不會引發任何異常,這就是為什么Task Exception屬性為null的原因。

為了引發異常,您應該在一個任務動作中使用ThrowIfCancellationRequested方法。

有關此的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM