次のコードがあるとします。
// TCO = TaskContinuationOptions
FirstAsyncMethod()
.ContinueWith(t => SecondAsyncMethod(t.Result), TCO.OnlyOnRanToCompletion)
.ContinueWith(t => HandleErrors(t));
そのまま実行してFirstAsyncMethod例外をスローすると、 onがチェーン全体を停止するHandleErrorsため、呼び出されることはありません。TaskContinuationOptionsSecondAsyncMethod
一方、 on を削除するTaskContinuationOptionsとSecondAsyncMethod、アクセスするTask.Resultと元の AggregateException の InnerException としてAggregateExceptionスローされます。私の実際のコードでは、これによりアンラップする必要のあるばかげた階層が生成されます。
の結果をキャプチャ (つまりチェーン) しませんがContinueWith、明らかに問題にHandleErrorsなる前に呼び出されます。SecondAsyncMethod
a に適用TaskContinuationOptionsして、ContinueWithそのステップのみを潜在的にスキップし、後続のステップをスキップする方法はありますか?