雖然人們的大多數關注點都在.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