0
我嘗試了很多方法,但未能捕獲task.ContinueWith中的取消異常。這有什麼錯在這裏:C#:如何在任務中捕獲取消異常。繼續
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();
輸出是:
取消:
這意味着取消異常被捕獲,但除了本身是空的。我的問題是如何在這裏取消取消異常?
感謝
德里克
那麼,如果任務被取消,那麼因爲你已經取消了它。如果某項任務出現故障,可能有任何原因,然後您需要排除異常。爲什麼在任務被取消時需要例外?順便說一句如果有任何異常,那麼你只能期望OperationCanceledException。沒有任何意義,以保持例外; o) –
爲什麼你不能只使用't.IsCanceled'測試?這似乎足夠。 – usr