Task
我有一些通过 TPL以异步方式运行的复杂函数,有时可能会以意想不到的方式失败。当发生此类故障时,这表明可能导致程序状态损坏的编程错误。因此,我不希望我的程序捕获异常、处理它并“跛行”,我希望我的进程崩溃并终止。
我还希望这个东西以这样的方式死掉,即 Windows 错误报告系统将其检测为崩溃,并执行所有有用的调试操作,例如捕获小型转储、将其发送给 Microsoft 等。
我意识到这可能与您对程序在错误情况下应该做什么的看法背道而驰,但问题不在于那个。
我遇到的问题是,因为异常是从任务中引发的,所以它不会立即导致进程崩溃。一段时间后,当垃圾收集器根据自己的智慧决定收集“未观察到的”异常时,它会崩溃。
我希望该过程立即崩溃,因为...
- 来自实际错误的调用堆栈和线程转储是我想在故障转储中收集的
- 进程“一瘸一拐”并在稍后不确定的时间崩溃可能会导致进一步的损害,因为它将在可能损坏的程序状态下工作
- 用户对实际导致崩溃发生的操作感到困惑
所以,简而言之,问题是:
如何使我的进程从Task
使用 TPL 创建的 async 崩溃,以便 Windows 错误报告能够创建有用的小型转储?
提前致谢!