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