This March 2017 Preview of the Quality Rollup for Windows 8.1 and Windows Server 2012 R2 includes cumulative improvements in reliability in the .NET Framework 4.6.2. We recommend that you apply this quality rollup as part of your regular maintenance routines. Before you install this update, see the "Prerequisites" and "Restart requirement" sections
Quality and reliability improvements
Applications that frequently queue bursts of work items to the .NET ThreadPool, and that have idle or light activity between bursts, may be shown in PerfView to spend significant CPU time in clr!ThreadpoolMgr::UnfairSemaphore::Wait spin-wait. A new configuration variable is exposed to set the spinning limit. Before the application starts, the COMPlus_ThreadPool_UnfairSemaphoreSpinLimit environment variable can be set to a lower value (the default is 0x32) to reduce the amount of spinning, or to zero (0) to disable spinning.
Note Changes to this configuration variable may adversely affect the performance of applications. Such changes are not supported.
Rare crashes or deadlocks can occur if a GC occurs while another thread is running NGen'ed code, and that code is making the initial call into a static method within the same module in which one or more parameter types involve type-forwarded value types.
How to get this update
For Windows 8.1 and Windows Server 2012 R2
This update is available by manual download only.
To get the stand-alone package for this update, go to the Microsoft Update Catalog website.
To apply this update, you must have the .NET Framework 4.6.2 installed.
You must restart the computer after you apply this update if any affected files are being used. We recommend that you close all .NET Framework-based applications before you apply this update.
This article applies to the following:
- Microsoft .NET Framework 4.6.2 when used with:
- Windows Server 2012 R2
- Windows 8.1