多くの方法を試しましたが、task.ContinueWithで取り消し例外をキャッチできませんでした。C#: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();
出力は次のとおりです:キャンセル
:ここに何か問題があり
キャッチされるキャンセル例外を意味しますが、例外自体は空です。私の質問は、キャンセルの例外をここで取得する方法です。
おかげ
デレク
タスクがキャンセルされた場合は、キャンセルしたためです。タスクにフォールトが発生した場合は、何らかの理由がある可能性があります。その場合、例外が必要です。タスクがキャンセルされたときに例外が必要なのはなぜですか? BTW例外があった場合は、OperationCanceledExceptionのみしか期待できません。例外を維持する意味がありませんでした; o) –
なぜ 't.IsCanceled'テストを使用できませんか?それは十分だと思われる。 – usr