MSDN@のTPL例外処理の例を見ています。
http://msdn.microsoft.com/en-us/library/dd537614(v=VS.100).aspx
コードの基本的な形式は次のとおりです。
Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); });
try
{
task1.Wait();
}
catch (AggregateException ae)
{
throw ae.Flatten();
}
私の質問は:これは競合状態ですか?tryが実行される前にtask1がスローされた場合はどうなりますか?これがレースになるのを止める何かが欠けていますか?
代わりに次のように書くべきではありません:
try
{
Task task1 = Task.Factory.StartNew(() => { throw new IndexOutOfRangeException(); });
task1.Wait();
}
catch (AggregateException ae)
{
throw ae.Flatten();
}