应用对象
.NET Framework 4.6.1 .NET Framework 4.6.2 Windows 8.1 Windows RT 8.1 Windows Server 2012 R2 Datacenter Windows Server 2012 R2 Essentials Windows Server 2012 R2 for Embedded Systems Windows Server 2012 R2 Foundation Windows Server 2012 R2 Standard

请参阅本文适用的产品和操作系统。 本文介绍 3139550适用于 Microsoft .NET Framework 4.6.1 和 .NET Framework 4.6 on Windows 8.1、Windows RT 8.1 和 Windows Server 2012 R2 的修补程序汇总更新。 有关此修补程序汇总中的修补程序详细信息,请参阅"此修补程序汇总修复的问题"部分。

解决方法

下载信息

与 KB3139550 对应的修补程序已取代 .NET Framework 的最新更新,其中包含 KB3139550 中以前包含的所有修补程序。 建议安装最新更新的 .NET Framework

有关如何下载 Microsoft 支持文件的更多信息,请单击下面的文章编号,以转到 Microsoft 知识库中相应的文章:

119591 如何从联机服务获取 Microsoft 支持文件 Microsoft 扫描了此文件中的病毒。 Microsoft 使用的是文件发布时可以获得的最新病毒检测软件。 该文件存储在安全性得到增强的服务器上,以防止对文件进行未经授权的更改。

更多信息

先决条件

若要应用此修补程序,必须安装 .NET Framework 4.6.1 或 .NET Framework 4.6。  

重启要求

如果正在使用任何受影响的文件,则应用此修补程序后必须重新启动计算机。 建议在应用此修补程序.NET Framework关闭所有基于应用程序的应用程序。  

修补程序替换信息

此修补程序包不会替换以前发布的修补程序包。

此修补程序汇总修复的问题

问题 1

当 WPF 应用程序在 TreeView 的上下文外部使用 TreeViewItem 时,应用程序可能会遇到其堆栈跟踪启动如下的 InvalidCastException 异常: 系统。Windows。Controls.VirtualizingStackPanel.FindScrollOffset (Visual v) 注意 当 TreeViewItem 位于虚拟化列表控件 (例如 ListBox、DataGrid 或 ListView 控件) 尝试查找 TreeViewItem 或其后代之一的滚动偏移量时,会出现此异常。 例如,如果将 TreeViewItem 声明为 DataTemplate 的根,并且 DataTemplate 用作 DataGrid 列的 CellTemplate,则会发生此异常。  

问题 2

两个 System.Web。Caching System.Runtime。Caching整个 AppDomain 使用的内存大小,而不是缓存项使用的内存大小。这是从 4.5 .NET Framework的回归,因为计时器实现中的变化。 除了报告错误的大小外,缓存引用的其他对象还可能会显著影响第 2 代 GC 延迟。 在 ASP.NET 托管方案中,缓存还错误地计算了应用域 (中所有缓存的大小,如回收应用域时通过"缓存使用的进程内存限制百分比"ASP.NET 性能计数器) 报告。此修补程序将删除缓存中对其他应用域对象的意外引用,以便报告正确的大小。 此修补程序还包括改进 System.Runtime 延迟的更改。Caching服务器 GC 的多核计算机上运行。 此外,应用此修补程序后,会正确计算应用域回收方案中所有缓存的大小。  

问题 3

如果你拥有依赖于鼠标触摸移动的 Windows Presentation Foundation (WPF) 应用程序来处理触摸用户交互 (而不是直接使用触摸事件) ,则可能会遇到非常少的已升级鼠标移动量。以前,WPF 限制的触摸移动鼠标升级,以避免大量触摸移动使调度程序不知所措。 在 .NET Framework 4.6.1 中,引入了一个修补程序来限制已处理的触摸移动数。 在此更改后,对鼠标提升进行限制导致生成的鼠标移动次数进一步减少。 现已删除鼠标促销限制,以便触摸移动事件与提升的鼠标移动事件之间应该存在几乎一对一的对应关系。  

问题 4

假设你正在处理面向 4.6 .NET Framework WPF 应用程序。 尝试使用 DispatcherOperation 在 WPF 调度程序调用的任何方法中设置 CurrentThread.CurrentCulture 或 CurrentThread.CurrentUICulture 值。 例如,你尝试在 UI 事件处理程序或 MainWindow 构造函数中设置此值。 在这种情况下,CurrentCulture 和 CurrentUICulture 值将重置为方法末尾的其各自以前的值。 如果应用程序在其 MainWindow 构造函数或按钮单击处理程序中设置 CurrentUICulture,该设置将还原为系统 UI 区域性。此修补程序确保 WPF 应用程序中的方法中设置的 CurrentThread.CurrentCulture/CurrentUICulture 值与在 .NET Framework 4.6 之前保持相同。  

问题 5

在 .NET Framework 4.6 中,一个新标志 TaskContinuationOptions.RunContinuationsAsynchronously 添加到任务库。 但是,当将此标志与 Task.WhenAll、Task.WhenAny 或 Task.Unwrap 一起使用时,该标志不起作用。 引入 标志是为了避免出现某些死锁情况。 此修复确保所有类型的任务延续都遵守新标志。  

问题 6

在 .NET Framework 4.6 中,AppContext 中出现一个 bug,导致 AppContext 方法的线程安全性未正确实现。 AppContext 是基础结构的一部分,可减少中断性更改。 可以使用 AppContext 设置和检索标志,并基于该数据在应用程序中做出决策。此修补程序为 AppContext 上与设置和检索开关值相关的方法启用正确的线程安全。  

问题 7

如果遇到具有分配和生存模式的边缘情况,并且需要在托管堆上创建一个新段,则垃圾回收器可以计算小于应该的提交大小。 这会导致在压缩阶段出现访问冲突,因为垃圾回收器尝试写入未提交的内存。此修补程序正确计算大小。  

问题 8

为某些方法创建本机代码时,.NET Framework应用程序和 NGEN 进程可能会遇到意外崩溃。

问题 9

RyuJit 生成不正确的指令来比较寄存器上的 16 位无符号整数。 如果输入值具有不同的 MSB 值,并且如果生成的比较指令使用寄存器操作数,则生成不正确的结果。此修补程序生成正确的说明。  

适用范围

本文适用于以下内容:  

  • Microsoft .NET Framework 4.6.1

  • Microsoft .NET Framework 4.6,用于:  

    • Windows 8.1

    • Windows RT 8.1

    • Windows Server 2012 R2 Datacenter

    • Windows Server 2012 R2 Essentials

    • Windows Server 2012 R2 for Embedded Systems

    • Windows Server 2012 R2 Foundation

    • Windows Server 2012 R2 Standard

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。