虽然人们的大多数关注点都在.NET Core上,但经典的.NET Framework仍然在开发中。.NET 4.8的“早期访问”预览版表明了微软最关心的领域包括高DIP、可访问性和并发性。
\\.NET 4.8预计将于2019年发布。目前的预期是,它将在稍后的Windows 10 build 1607上运行,但这一决定并非最终结果。
\\Span\u0026lt;T\u0026gt;
\\在介绍新版本将要包含哪些内容之前,值得一提的是,最受期待的功能Span\u0026lt;T\u0026gt;不会成为此版本的一部分。据微软的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:在并发调用新动态方法可能发生的潜在崩溃\\t
- CLR:调用EventSource的Dispose()时可能发生死锁\\t
- 网络:在锁定NetworkChanged监听器和用户回调时,NetworkInformation.NetworkChange可能会发生死锁\\t
- WCF:在调用Set()之前关闭WaitHandle,可能在AsyncResult中存在竞态条件\\t
- WCF:当中止连接导致从CleanupChannelCollections中抛出ObjectDisposedException时可能发生的竟态条件\\t
- 工作流程:在极端使用条件下(与MSDTC的大量连接),单个线程可能会无限期地持有CriticalSection\\t
- 用户界面可访问性(UIA)\
UIA的关注点仍然是WinForms获得新的UIA行为,以及修复UIA和WPF中UIA错误。(很多非UIA错误也在二者中得到修复。)
\\有关变更的完整列表,请参阅.NET 4.8发布说明。预览版本身可以通过.NET博客获得。
\\查看英文原文:An early Look at .NET 4.8