私はこの単純なTPLコードを持っています:
var t = Task.Factory.StartNew(() => { throw null; })
.ContinueWith((ant) => { Console.WriteLine("Success"); },
TaskContinuationOptions.OnlyOnRanToCompletion)
.ContinueWith((ant) => { Console.WriteLine("Error"); },
TaskContinuationOptions.OnlyOnFaulted);
t.Wait();
未処理の例外が発生します:
Unhandled Exception: System.AggregateException: One or more errors occurred.
...
t.Wait()
を入力すると、例外がtry-catch
そこでキャッチされ、例外継続を使用するという全体的なポイントに反することがわかります。ここで、完了継続を削除すると、タスクによってスローされた例外は例外継続で処理され、上記の例外は発生しません。誰かが起こっていることに光を当てることができますか?.NET4.0でVS2010SP1を使用しています