我们希望切换到.net 4.5,因为它提供了许多改进。
但是......有时候我发现了一些关于框架中不是微不足道的变化的棘手细节。
让我们看一下TPL未被观察到的exception handling作为例子:
如果您不等待传播异常或访问的任务 它的异常属性,异常根据提升而升级 任务被垃圾收集时的.NET异常策略。 (注意,“例外政策”一词没有任何联系或澄清)
嗯,这似乎是.Net v.4.0中的行为
但Stephen Toub tells us more:
使开发人员更容易编写基于的异步代码 任务,.NET 4.5更改未观察到的默认异常行为 例外。虽然未观察到的异常仍将导致 要引发的UnobservedTaskException事件(不这样做会是一个 破坏更改),默认情况下进程不会崩溃。相反, 异常将在事件发生后最终被吃掉, 无论事件处理程序是否遵守该异常。这个 但是,可以配置行为。新的CLR配置标志可以 用于恢复.NET 4的崩溃行为。
请注意,此更改并不意味着开发人员应该不小心 忽略未处理的异常......它只是意味着运行时更多 比过去更宽容了。
这是一个很大的惊喜。考虑到文档中没有更新。
所以,我想知道在.Net v4.5中发生的其他“无声”变化我会更清楚。 请分享你的知识。
P.S。在这里,“沉默”这个词意味着从Wat的新articles甚至官方文献中难以得知的变化。