代码之家  ›  专栏  ›  技术社区  ›  relatively_random

何时在调用线程中引发触发和忘记任务的异常?

  •  1
  • relatively_random  · 技术社区  · 8 年前

    根据 MSDN :

    如果不等待传播异常或访问的任务 其异常属性,根据 垃圾收集任务时的.NET异常策略。什么时候 允许异常冒泡回到连接线程,然后 任务可能会在之后继续处理某些项目 则引发异常。

    我假设任务类有一个引发异常或类似事件的终结器。但是,为什么下面这些似乎是无限期运行的呢?

    long collectionCount = 0;
    
    Task.Factory.StartNew(() => { throw new NotImplementedException(); });
    
    while (true)
    {
        GC.Collect();
        GC.WaitForPendingFinalizers();
        ++collectionCount;
    }
    
    1 回复  |  直到 8 年前