.NET Framework 4.8预览

虽然人们的大多数关注点都在.NET Core上,但经典的.NET Framework仍然在开发中。.NET 4.8的“早期访问”预览版表明了微软最关心的领域包括高DIP、可访问性和并发性。

.NET 4.8预计将于2019年发布。目前的预期是,它将在稍后的Windows 10 build 1607上运行,但这一决定并非最终结果。

Span<T>

在介绍新版本将要包含哪些内容之前,值得一提的是,最受期待的功能Span<T>不会成为此版本的一部分。据微软的Rich Lander称,

Span包含在.NET Core 2.1中。我们试图在.NET Framework 4.8中包含Span,但由于对现有应用程序的兼容性问题而决定不这么做。你可以System.Memory Nuget包中访问Span和其他相关类型。

System.Memory:https://www.nuget.org/packages/System.Memory/

高DPI

高DPI仍然是.NET的焦点。随着显示器分辨率不断提高,应用程序需要放大以补偿文字和图像太小造成的无法辨认。在此版本中,ClickOnce和WinForms将迎来高DPI更新。

高DPI问题持续存在的原因有两个。首先是高分辨率显示器的可用性问题。在支持缩放的硬件变得可用之前,微软无法有效测试200%和300%的缩放比例。因此,除非显示器已经改进到一定程度,否则缩放仍然是一个问题。

另一个挑战是多监视器设置。当应用程序在不同分辨率的显示器之间移动时,必须重新计算缩放并换出图像。更糟糕的是,应用程序可能会在两个或多个具有不同分辨率的显示器上发生重叠。解决这种情况需要各种妥协,结果并不总是令人满意。

性能

除了通常的内部调整(如减少AsyncLocal的内存使用量或微调旋转锁)之外,此版本还修复了SqlDataReader.ReadAsync实际上不是异步执行的问题。

死锁和静态条件

鉴于.NET Framework日趋成熟,我们可能会惊奇地发现,许多核心库仍存在竞态条件和死锁。以下是与并发相关问题的部分列表。

  • CLR:在并发调用新动态方法可能发生的潜在崩溃

  • CLR:调用EventSource的Dispose()时可能发生死锁

  • 网络:在锁定NetworkChanged监听器和用户回调时,NetworkInformation.NetworkChange可能会发生死锁

  • WCF:在调用Set()之前关闭WaitHandle,可能在AsyncResult中存在竞态条件

  • WCF:当中止连接导致从CleanupChannelCollections中抛出ObjectDisposedException时可能发生的竟态条件

  • 工作流程:在极端使用条件下(与MSDTC的大量连接),单个线程可能会无限期地持有CriticalSection

  • 用户界面可访问性(UIA)

UIA的关注点仍然是WinForms获得新的UIA行为,以及修复UIA和WPF中UIA错误。(很多非UIA错误也在二者中得到修复。)

有关变更的完整列表,请参阅.NET 4.8发布说明。预览版本身可以通过.NET博客获得。

原文地址:http://www.infoq.com/cn/news/2018/06/.Net-4.8-Preview

 
  

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

猜你喜欢

转载自blog.csdn.net/sd7o95o/article/details/80788867