我的理解是,当 Task 抛出异常时,当观察到 Tasks 的 (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 抛出一个异常,但它没有发生,而是继续打印第二个循环的输出。我的理解哪里错了?