Applies ToWindows 8 Windows RT Windows Server 2012 Standard Windows Server 2012 Standard

Para aplicar este conjunto de correcções, vá para o seguinte artigo da base de dados de conhecimento e transferir o conjunto de correcções correcto:

2925383 2925383 de conjunto de correcções está disponível para o .NET Framework 4.5.1 no Windows

Introdução

Este artigo descreve o conjunto de correcções 2908385 que está disponível para o Microsoft .NET Framework 4.5.1. Para mais informações sobre o problema resolvido pela correcção, consulte a secção "Mais informação".Este conjunto de correcções está disponível para os seguintes sistemas operativos:

  • Windows 8

  • Windows Server 2012

Mais informações

Informações sobre a correcção

Agora tem uma correcção suportada disponível na Microsoft. Contudo, destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico.Para resolver este problema, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa dos números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:

http://support.microsoft.com/contactus/?ws=supportNota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos de normais do suporte serão aplicados a questões de suporte adicionais e problemas que não se enquadrem na atualização específica em questão.

Pré-requisitos

Para aplicar esta correcção, tem de ter o .NET Framework 4.5.1 instalado.

Requisito de reinício

Tem de reiniciar o computador depois de aplicar esta correcção se todos os ficheiros afectados que estão a ser utilizados. Recomendamos que feche todas as aplicações baseadas no .NET Framework antes de aplicar esta correcção.

Informações sobre substituição da correção

Este pacote de correcção não substitui um pacote de correcções disponibilizadas anteriormente.

Problemas que este conjunto de correcções resolve

Problema 1

SymptomsSuponha que invocar o método de Application.DoEvents() do processador do evento ValueChanged de um controlo de NumericUpDown . Por exemplo, utilize o seguinte código:private void numericUpDown1_ValueChanged(object sender, EventArgs e){ for (int i = 0; i < 10; i++) { Application.DoEvents(); Thread.Sleep(10); } } Quando a cima ou para baixo do botão de seta for premido durante vários segundos, o controlo cria um temporizador para gerar incrementos repetidos ou diminui. No Application.DoEvents da escala de temporizador é processada novamente. Isto faz com que um novo evento ValueChanged . Em seguida, reintroduza o processador de eventos de escala do temporizador. Quando o botão do rato é libertado, o temporizador é destruído no processador na parte inferior da pilha, mas, em seguida, for reutilizado novamente como a pilha está a ser estiver desenrolada pelos outros processadores. Isto provoca uma excepção de referência nula e uma falha.

Solução alternativaPara contornar este problema, utilize BeginInvoke para chamar assincronamente ( Application.DoEvents) depois do evento de temporizador é processado. Por exemplo, utilize a seguinte classe para substituir o comportamento predefinido: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); }} Nota Geralmente, não recomendamos a reintroduzir um ciclo de mensagem (Application.DoEvents) de um processador de mensagens (ValueChanged é desencadeado do processador de mensagens Timer.OnTick ), uma vez que tal situação possa conduzir a sobrecarga da pilha. Por exemplo, o intervalo do controlo NumericUpDown é grande e o utilizador mantiver premido o botão de seta durante muito tempo. Utilize BeginInvoke para evitar a sobrecarga de pilha. Esta correcção não corrige este problema.

Problema 2

Sintomas

Copiar texto formatado de um documento XPS grande pode demorar vários minutos, dependendo da posição do texto no documento e pode fazer com que a aplicação fixar.CauseEste problema ocorre porque algumas declarações de formatação requerem digitalizar o documento a partir do início para a selecção desejada. Estas declarações são raras (forem provenientes de elementos personalizados que tenham um atributo TextElementEditingBehaviorAttribute que não está marcado como IsTypographicOnly).A lógica é alterada nesta correcção para evitar a pesquisa dispendiosa quando essas declarações não aparecem na selecção pretendida.

Problema 3

Sintomas

Um bloco de texto de apresentação de Windows Foundation (WPF) poderá não apresentar um ou mais caracteres no fim do respectivo texto. Este problema ocorre quando se verificam as seguintes condições:

  • TextWrapping ou TextTrimming é activado.

  • Preenchimento é diferente de zero ou TextFormattingMode é "Ecrã".

  • Largura não está definida ou é definida como "Automático".

  • O FontFamily, TamanhoDoTipoDeLetra e caracteres específicos no texto conduzir a uma largura desfavorável.

CauseEste problema ocorre devido a inexactidões numéricos (um arredondar erro) que podem ocorrer durante o cálculo da largura do texto, converter a largura entre sistemas de coordenadas internos, Contabilização de preenchimento e alinhar o texto para limites de pixel para modo de visualização.Protecção contra estes tipos de imprecisões foi adicionada para os cálculos, certifique-se de que todos os caracteres que devem ser apresentados serão apresentados.

Problema 4

Objectos de afixação podem causar demasiado fragmentação de memória heap, provocando uma diminuição no desempenho. Esta correcção fornece reutilização mais eficiente de memórias intermédias, que minimiza a fragmentação de memória da pilha.

Problema 5

Por vezes, uma aplicação pode encontrar uma excepção de violação de acesso durante AppDomain encerrado após um operação de recolha de lixo de fundo.

Problema 6

As ferramentas de diagnóstico que efectue IL instrumentation utilizando a API de criação de perfis podem causar a excepção não processada seguinte ser accionada pelo common language runtime (CLR):

0X80131401 "= SECURITY_E_INCOMPATIBLE_SHARE. O carregamento desta assemblagem iria gerar um conjunto de outras instâncias de permissões diferente.

Além disso, o processo falha. Este problema só ocorre quando utiliza ferramentas de diagnóstico.

Problema 7

Quando utiliza o ponto de extensibilidade de HttpMessageHandler do Windows Communication Foundation (WCF) 4.5 (também conhecido como a tubagem de HTTP WCF), o cabeçalho WWW-Authenticate não é possível definir HttpRequestMessage ou HttpResponseMessage. Isto acontece porque o novo ponto de extensibilidade de HttpMessageHandler utiliza um mecanismo de diferente para o processamento de cabeçalhos.Depois de aplicar esta correcção, os dois mecanismos para adicionar os cabeçalhos sejam levados ao paridade e um deve ser possível adicionar cabeçalhos WWW-Authenticate novamente.

Problema 8

É accionada uma excepção de NullReferenceException do método SqlInternalConnectionTds.BreakConnection . Esta correcção resolve o problema de temporização que oportunidades potenciais para a excepção de NullReferenceException .

Problema 9

SintomasSuponha que tem uma aplicação do WCF que utiliza a classe de BinaryMessageEncoder e o codificador utiliza um registo de texto UTF-8, com base por [MC-NBFX]. Ou suponha que tem uma aplicação do WCF que utiliza o método System.ServiceModel.Channels.Message.CreateBufferedCopy . Uma mensagem é processada que contém caracteres no intervalo de U + 10000 para U + 10FFFF (inclusive) que estão representados em UTF-8, como uma sequência de 4 bytes. Nesta situação, perde-se a mensagem binária codificada e recebe a seguinte mensagem de erro:System.ArgumentException: The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)' fallback 'System.Text.DecoderExceptionFallback'.Parameter name: charsat 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() Quando este problema ocorre, o cliente de tempo limite sem resposta se a aplicação do WCF alojada por conta própria. Se a aplicação do WCF (ASP.NET) alojada na web, o cliente receberá um erro de 500 servidor.

Causa

Este problema ocorre devido a um detalhe de implementação interna que, por vezes, atribui espaço insuficiente quando são descodificadas sequências de caracteres UTF-8 de 4 bytes.

Resolução

Para resolver este problema, aplique a correcção. Depois de aplicar a correcção, a aplicação do WCF irá aguardar que o seguinteMétodo de leitura para descodificar os caracteres, se existir espaço suficiente na memória intermédia de saída para descodificar os caracteres Unicode multibyte.

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.