これは、未処理の例外を通知します。
new Thread(_ => { throw new Exception(); }).Start();
これはしません(少なくとも結果を待つ/取得するまで):
Task.Factory.StartNew(() =>
{
throw new Exception();
});
なんで?例外がスローされたスレッドはどうなりましたか? それは死にますか?
これは、次のように、タスクを実行するが、その結果を必要としない、または待機する必要がない場合の問題です。
_operationQueue = new BlockingCollection<Operation>();
Task.Factory.StartNew(() =>
{
foreach (var item in _operationQueue.GetConsumingEnumerable())
{
// do something that throws
}
}, TaskCreationOptions.LongRunning);
この場合、_operationQueue
左側はどのような状態ですか?
TaskContinuationOptions.OnlyOnFaulted で継続を使用できることはわかっていますが、処理を再開できますか?