私の理解では、タスクが例外をスローすると、タスクの (Result、WaitAll) プロパティのいずれかが観察されるか、GC が発生したときに、例外が保存されて再スローされます。それを考慮して、次のコードを実行します。
Task t = Task.Factory.StartNew(() =>
{
throw new Exception("Hello World");
});
for (int i = 0; i < 10000; i++)
{
Console.WriteLine(i);
}
GC.Collect();
for (int a = 20; a < 30; a++)
{
Console.WriteLine(a);
}
しかし、上記のコードを実行すると、GC.Collect で例外がスローされることはありませんが、例外は発生せず、2 番目のループから出力を出力し続けます。ここで私の理解はどこが間違っていますか?