我正在使用.NET 4.0中的TPL(任务并行库)。 我想通过使用
是否有人完全遇到同样的问题还是只有我? 你有任何解决方案吗?
Thread.GetDomain().UnhandledException
事件来集中处理所有未处理的异常的处理逻辑。 然而,在我的应用程序中,对于使用TPL代码启动的线程,例如Task.Factory.StartNew(...)
,该事件从未触发。 如果我使用类似new Thread(threadStart).Start()
的东西,则确实会触发该事件。
这篇MSDN文章建议在使用TPL时使用Task.Wait()来捕获AggregateException,但这不是我想要的,因为这种机制不够"集中"。是否有人完全遇到同样的问题还是只有我? 你有任何解决方案吗?
UnobservedTaskException
事件只有在故障的Task
对象被终结时才会被触发。但对象终结并不能保证一定会运行。 - Jean HominalTask
中的未观察到的异常不会导致进程终止。 - hyankov