修补程序汇总包 2908385 则适用于.NET Framework 4.5.1 在 Windows 8 和 Windows Server 2012

要应用此修补程序汇总包,请转到下面的知识库文章,并下载正确的修补程序汇总︰

2925383是用于.NET Framework 4.5.1 在 Windows 修补程序汇总包 2925383

简介

本文介绍了修补程序汇总包 2908385 可用于 Microsoft.NET Framework 4.5.1。有关此修复程序可以解决该问题的详细信息,请参阅"更多信息"部分。

此修补程序汇总包是适用于以下操作系统︰

  • Windows 8

  • Windows Server 2012


详细信息

修补程序信息

受支持的修补程序现已从 Microsoft 推出。但是,它旨在纠正本文介绍的问题。它仅应用于正经历此特定问题的系统。

若要解决此问题,请联系 Microsoft 客户支持服务以获取此修复程序。有关 Microsoft 客户支持服务的电话号码和有关支持费用的信息的完整列表,请访问下面的 Microsoft 网站︰

http://support.microsoft.com/contactus/?ws=support注意: 在特殊情况下,如果 Microsoft 支持专业人员确定某个特定的更新能够解决您的问题,可能取消的通常情况下收取的电话支持服务费用。照常收取支持费用将应用于其他支持问题和对于特定更新无法解决的问题。

系统必备组件

若要应用此修补程序,您必须具有.NET Framework 4.5.1 安装。

重启要求

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

修补程序替换信息

此修复程序包不替代以前发布的修补程序软件包。


此修补程序汇总解决的问题

问题 1

Symptoms

假定您调用Application.DoEvents() 方法中,从段控制的ValueChanged事件的处理程序。例如,您可以使用以下代码︰private void numericUpDown1_ValueChanged(object sender, EventArgs e){
for (int i = 0; i < 10; i++)
{
Application.DoEvents();
Thread.Sleep(10);
}
}
当向上或向下箭头按钮按下几秒钟,该控件创建一个计时器,以生成重复的增加或减少。在Application.DoEvents计时器嘀嗒信号再次处理。这将导致一个新的ValueChanged事件。然后,重新输入计时器的 tick 事件处理程序。当释放鼠标按钮时,计时器底部的堆栈,该处理程序在被销毁,但然后会再次重新使用为其他处理程序正在展开堆栈。这会导致空引用异常和崩溃。



解决方法

若要变通解决此问题,请使用BeginInvoke异步调用Application.DoEvents(),则在处理计时器事件后。例如,使用下面的类可以重写默认行为︰public class MyNumericUpDown : System.Windows.Forms.NumericUpDown{
public NumericUpDown() : base()
{
}
protected override void OnValueChanged(EventArgs e)
{
// run the handler as a separate event to prevent re-entrance to prevent a NullRef when hitting.
if (IsHandleCreated)
BeginInvoke(new Action(() => base.OnValueChanged(e)));
else
base.OnValueChanged(e);
}
}
注意:通常情况下,我们不建议重新消息循环 (Application.DoEvents) 输入消息处理程序 (从Timer.OnTick消息处理程序引发ValueChanged ),从,因为这可能会导致堆栈溢出。例如,段控件的范围很大,而用户长时间按住向下箭头按钮。BeginInvoke用于避免发生堆栈溢出。此修补程序不能解决此问题。

问题 2

症状

复制带格式的文本,从一个长的 XPS 文档可以根据文档中的文本的位置需要几分钟时间,并可以导致应用程序冻结。

Cause

因为一些格式声明需要扫描的文档从头到所需的选项,将出现此问题。这些声明很少 (他们来自于有一个未标记为IsTypographicOnly的TextElementEditingBehaviorAttribute属性的自定义元素)。

此修补程序以避免昂贵的扫描,这样的声明出现在所需的选项中更改逻辑。

问题 3

症状

Windows Presentation Foundation (WPF) 文本块可能无法在其文本的末尾显示一个或多个字符。满足以下条件时,会发生此问题︰

  • 启用了 TextWrapping 或 TextTrimming。

  • 填充不是零,或 TextFormattingMode"显示"。

  • 宽度未设置,或设置为"自动"。

  • FontFamily、 字号和文本中的特定字符会导致不利的宽度。

Cause

数值不准确 (舍入误差) 可能发生在计算文本,转换内部坐标系,填充,和对齐文本的显示模式的像素边界与会计之间的宽度的宽度时出现此问题。

防止这种不准确之处已添加到计算结果,以确保将显示所有显示的字符。

问题 4

固定对象可能导致太多的堆内存碎片,从而导致性能降低。此修复程序提供了更高效的重用内存缓冲区,这样就会减少堆内存碎片。

问题 5

有时,应用程序可能会遇到过程在后台垃圾回收操作后关闭的 AppDomain 中访问冲突异常。

问题 6

通过使用分析 API 执行 IL 检测诊断工具可能会导致以下未经处理的异常可以由公共语言运行时 (CLR) 引发︰

0X80131401"= SECURITY_E_INCOMPATIBLE_SHARE。加载此程序集将产生不同的授予集从其他实例。


此外,该进程崩溃。此问题仅发生时使用的诊断工具。

问题 7

当您使用 Windows 通讯基础 (WCF) 4.5 HttpMessageHandler可扩展性点 (也称为 WCF HTTP 管道) 时,无法在HttpRequestMessage或HttpResponseMessage上设置 WWW 身份验证标头。这是因为新HttpMessageHandler可扩展性点使用不同的机制来处理邮件头。

应用此修补程序后,这两种机制来添加标头进入奇偶校验,并应能够再次添加 WWW 身份验证标头。

问题 8

NullReferenceException异常的SqlInternalConnectionTds.BreakConnection方法。此修补程序可解决NullReferenceException异常会导致计时问题。

问题 9

症状

假定有一个 WCF 应用程序使用BinaryMessageEncoder类,编码器使用 utf-8 基于文本记录每个[MC-NBFX]。或者,假定您有一个 WCF 应用程序使用System.ServiceModel.Channels.Message.CreateBufferedCopy方法。处理一条消息,包含 U + 10000 U + 10FFFF (含) 到 4 字节序列为 utf-8 表示范围中的字符。在此情况下,编码二进制消息可能会丢失,并且您会收到以下错误消息︰

System.ArgumentException: The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)' fallback 'System.Text.DecoderExceptionFallback'.Parameter name: chars
at System.Text.Encoding.ThrowCharsOverflow()
at System.Text.Encoding.ThrowCharsOverflow(DecoderNLS decoder, Boolean nothingDecoded)
at System.Text.UTF8Encoding.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount, DecoderNLS baseDecoder)
at System.Text.DecoderNLS.GetChars(Byte* bytes, Int32 byteCount, Char* chars, Int32 charCount, Boolean flush)
at System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteCount, Char[] chars, Int32 charIndex, Boolean flush)
at System.Text.DecoderNLS.GetChars(Byte[] bytes, Int32 byteIndex, Int32 byteCount, Char[] chars, Int32 charIndex)
at System.Xml.ValueHandle.TryReadChars(Char[] chars, Int32 offset, Int32 count, Int32& actual)
at System.Xml.XmlBaseReader.ReadValueChunk(Char[] chars, Int32 offset, Int32 count)
at System.Xml.XmlBinaryWriter.WriteTextNode(XmlDictionaryReader reader, Boolean attribute)
at System.Xml.XmlDictionaryWriter.WriteNode(XmlDictionaryReader reader, Boolean defattr)
at System.ServiceModel.Channels.ReceivedMessage.OnWriteBodyContents(XmlDictionaryWriter writer)
at System.ServiceModel.Channels.Message.OnWriteMessage(XmlDictionaryWriter writer)
at System.ServiceModel.Channels.Message.OnCreateBufferedCopy(Int32 maxBufferSize, XmlDictionaryReaderQuotas quotas)
at System.ServiceModel.Channels.StreamedMessage.OnCreateBufferedCopy(Int32 maxBufferSize)
at System.ServiceModel.Channels.Message.CreateBufferedCopy(Int32 maxBufferSize)
at ConsoleApplication1.BufferRequestChannel.WrappingRequestContext.BufferMessage()

发生此问题时,客户端无响应时超时 WCF 应用程序是自托管。如果 WCF 应用程序是 web 承载 (ASP.NET),则客户将接收 500 服务器错误。

原因

内部实现细节 4 字节的 utf-8 字符序列进行解码时有时会分配足够的空间,会出现此问题。

解决方案

要解决此问题,请应用此修复程序。应用此修复程序后,WCF 应用程序将等待下一次
要解码的字符,如果没有足够空间来解码字节的 Unicode 字符输出缓冲区中的读取方法。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

谢谢您的反馈意见!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×