.NET Framework 4.8预览

.NET Framework 4.8的早期预览版展示了微软在高DPI支持、并发性及可访问性方面的努力。虽然备受期待的Spanu0026lt;Tu0026gt;特性未能集成,但可通过System.Memory NuGet包获取。此外,此版本还解决了SqlDataReader.ReadAsync的异步执行问题,并修复了一系列并发性和死锁问题。

虽然人们的大多数关注点都在.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值