我正在使用.NET 4.0构建Windows服务.
我在任务中抛出了各种未处理的异常,但它们不会像MSDN文档所述那样终止我的进程(并行任务 - 请参阅未观察到的任务异常).
"如果您没有给故障任务提供传播其异常的机会(例如,通过调用Wait方法),那么当任务被垃圾收集时,运行时将根据当前的.NET异常策略升级任务的未观察异常. ".
即使我使用最简单的任务调用,它的行为也是如此:
Task.Factory.StartNew(() => { throw new Exception(); }
Run Code Online (Sandbox Code Playgroud)
调用该服务时,该服务保持正常运行.
根据文档,任务的终结器将在任务为GC后重新抛出异常,但这似乎不会发生.MSDN反复声明,正常的".NET异常策略"会导致进程终止.
为什么不终止我的应用程序?我能想到的唯一一件事就是以某种方式提到某个地方的任务(是lambda ??)