Aby zastosować ten pakiet zbiorczy poprawek, przejdź do następujący artykuł bazy wiedzy knowledge base i pobrać pakiet zbiorczy poprawek poprawne:

2925383 pakiet zbiorczy poprawek 2925383 jest dostępne dla.NET Framework 4.5.1 w systemie Windows

Wprowadzenie

W tym artykule opisano pakiet zbiorczy poprawek 2908385 jest dostępna dla programu Microsoft.NET Framework 4.5.1. Aby uzyskać więcej informacji dotyczących poprawki umożliwia rozwiązanie problemu zobacz sekcję "Więcej informacji".

Ten pakiet zbiorczy poprawek jest dostępna dla następujących systemów operacyjnych:

  • Windows 8

  • Windows Server 2012


Więcej informacji

Informacje o poprawce

Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak jest ona przeznaczona do usunięcia tylko problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem.

Aby rozwiązać ten problem, skontaktuj się z biurem obsługi klienta Microsoft w celu uzyskania poprawki. Aby uzyskać pełną listę numerów telefonów pomocy technicznej firmy Microsoft oraz informacje o kosztach, odwiedź następującą witrynę sieci Web firmy Microsoft:

http://support.microsoft.com/contactus/?ws=supportUwaga W wyjątkowych przypadkach opłaty za połączenie z pomocą techniczną mogą zostać anulowane, jeśli specjalista firmy Microsoft zdecyduje że określona aktualizacja, może rozwiązać Twój problem. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej aktualizacji.

Wymagania wstępne

Aby zastosować tę poprawkę, musi mieć.NET Framework 4.5.1 zainstalowany.

Wymagania dotyczące ponownego uruchomienia

Musisz ponownie uruchomić komputer po zastosowaniu tej poprawki, jeśli wszystkie pliki podlegające usterce są używane. Zaleca się zamknięcie wszystkich aplikacji.NET Framework, przed zastosowaniem tej poprawki.

Informacje dotyczące zastępowania poprawek

Ten pakiet poprawek nie zastępuje wcześniej wydanej poprawki.


Ten pakiet zbiorczy poprawek rozwiązuje problemy

Problem 1

Symptoms

Załóżmy, że wywołuje metodę Application.DoEvents() z obsługi zdarzeń ValueChanged formantu NumericUpDown . Na przykład możesz użyć następujący kod:private void numericUpDown1_ValueChanged(object sender, EventArgs e){
for (int i = 0; i < 10; i++)
{
Application.DoEvents();
Thread.Sleep(10);
}
}
Gdy na kilka sekund wciśnięty górę lub przycisk strzałki w dół, tworzy formant czasomierza do generowania powtarzające się zwiększa lub zmniejsza. W Application.DoEvents zaznaczyć czasomierza jest obsługiwane ponownie. Powoduje to, że nowe zdarzenie ValueChanged . Następnie można ponownie wprowadzić czasomierza obsługi zdarzeń znaczników osi. Gdy przycisk myszy zostanie zwolniony, czasomierz zniszczone w obsłudze na dole stosu, ale jest ponownie ponownie jako stos jest eliminowane przez inne programy obsługi. Powoduje to, że wyjątek odwołania zerowego i awarii.



Obejście problemu

Aby obejść ten problem, należy użyć BeginInvoke do wywołania ( Application.DoEvents) asynchronicznie, po przetworzeniu zdarzenia timer. Aby zastąpić domyślne zachowanie, na przykład, użyć następujące klasy: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);
}
}
Uwaga Ogólnie rzecz biorąc nie zaleca się ponownie pętli komunikatów (Application.DoEvents) z obsługi wiadomości (ValueChanged jest wywoływane z obsługi wiadomości Timer.OnTick ), ponieważ może to prowadzić do przepełnienia stosu. Na przykład zakres formantu jest duży, a użytkownik przytrzyma przycisk strzałki w dół przez długi czas. Użyj BeginInvoke , aby uniknąć przepełnienie stosu. Ta poprawka nie dotyczy ten problem.

Problem 2

Objawy

Kopiowanie tekstu sformatowanego od długiego dokumentu XPS może potrwać kilka minut, w zależności od położenia tekstu w dokumencie, a także może spowodować, że aplikacja do zamrożenia.

Cause

Ten problem występuje, ponieważ niektóre deklaracje formatowania wymagają skanowanie dokumentu od początku do wymaganego elementu. Deklaracje te są rzadko (pochodzą z niestandardowych elementów, które mają atrybut TextElementEditingBehaviorAttribute , który nie jest oznaczony jako IsTypographicOnly).

Logika jest zmieniany w tej poprawki, aby uniknąć drogich skanowania, gdy deklaracje te nie pojawiają się w odpowiednie zaznaczenie.

Problem 3

Objawy

TextBlock Windows Presentation Foundation (WPF) mogą nie być wyświetlane jeden lub więcej znaków na końcu tekstu. Ten problem występuje, gdy są spełnione następujące warunki:

  • TextWrapping lub TextTrimming jest włączona.

  • Dopełnienie jest różna od zera lub TextFormattingMode jest "Display".

  • Szerokość nie jest ustawiona lub jest ustawiona na "Auto".

  • FontFamily, FontSize i określonych znaków w tekście doprowadzić do niekorzystnych szerokość.

Cause

Ten problem występuje z powodu nieścisłości numeryczne (zaokrąglenie błędu), które mogą wystąpić podczas obliczania szerokość tekstu, konwertowanie szerokość między wewnętrzne systemy współrzędnych, rachunkowość dopełnienie i wyrównywania tekstu do granic pełnych pikseli dla trybu wyświetlania.

Ochrona przed tego rodzaju nieścisłości został dodany do obliczeń, aby upewnić się, że będą wyświetlane wszystkie znaki, które mają być wyświetlane.

Problem 4

Przypinanie obiektów może spowodować zbyt dużo fragmentacji pamięci sterty, powodując obniżenie wydajności. Ta poprawka zawiera bardziej efektywne ponowne użycie buforów pamięci, który minimalizuje fragmentacji pamięci sterty.

Wydanie 5

Czasami aplikacja może napotkać wyjątek naruszenia zasad dostępu podczas AppDomain zamknięty po tła operacji wyrzucania elementów bezużytecznych.

Problem 6

Narzędzia diagnostyczne, które zrobić przy użyciu profilowania interfejsu API instrumentacji IL może powodować następujące nieobsługiwany wyjątek zostanie wygenerowany przez common language runtime (CLR):

0X80131401 "= SECURITY_E_INCOMPATIBLE_SHARE. Załadowanie tego zestawu wywołałoby inny zestaw uprawnień z innych wystąpień.


Ponadto proces jest zamykany. Ten problem występuje tylko podczas korzystania z narzędzia diagnostycznego.

Wydanie 7

Gdy używasz punkt rozszerzeń HttpMessageHandler Windows Communication Foundation (WCF) 4.5 (znany również jako potoku HTTP WCF) w HttpRequestMessage lub HttpResponseMessagenie można ustawić nagłówka WWW-Authenticate. To dlatego nowy punkt rozszerzeń HttpMessageHandler używa inny mechanizm obsługi nagłówków.

Po zastosowaniu tej poprawki, dwa mechanizmy, aby dodać nagłówki zostaną zgłoszone parzystości i jeden powinien być można ponownie dodać nagłówki WWW-Authenticate.

Problem 8

Metoda SqlInternalConnectionTds.BreakConnection jest zgłaszany wyjątek NullReferenceException . Ta poprawka rozwiązuje problem chronometrażu, która prowadzi do NullReferenceException wyjątek.

Wydanie 9

Objawy

Załóżmy, że masz aplikacji WCF, która używa klasy BinaryMessageEncoder , a rekord tekstu UTF-8, oparte na [MC-NBFX]korzysta z kodera. Albo Załóżmy, że masz WCF aplikacji, która korzysta z metody System.ServiceModel.Channels.Message.CreateBufferedCopy . Wiadomość jest przetwarzana zawierającej znaki w zakresie U + 10000 do U + 10FFFF (włącznie), które są reprezentowane w formacie UTF-8, jako 4-bajtowa sekwencja. W takiej sytuacji binarne zakodowane wiadomości mogą zostać utracone, i zostanie wyświetlony następujący komunikat o błędzie:

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()

Gdy ten problem wystąpi, limit czasu klienta bez odpowiedzi Jeśli aplikacja usługi WCF jest samodzielnego. Jeśli aplikacja usługi WCF obsługiwane w sieci web (ASP.NET), klient otrzyma błąd serwera 500.

Przyczyna

Ten problem występuje z powodu szczegółowa implementacja wewnętrznego przydzielanej czasami zbyt mało miejsca, gdy są dekodowane 4-bajtowe sekwencje znaków UTF-8.

Rozwiązanie

Aby rozwiązać ten problem, należy zastosować poprawkę. Po zastosowaniu tej poprawki aplikacji WCF będzie czekać na następny
Metody odczytu do dekodowania znaków, jeśli jest za mało miejsca w buforze danych wyjściowych do dekodowania wielobajtowych znaków standardu Unicode.

Potrzebna dalsza pomoc?

Rozwijaj swoje umiejętności
Poznaj szkolenia
Uzyskuj nowe funkcje w pierwszej kolejności
Dołącz do niejawnych testerów firmy Microsoft

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?

Dziękujemy za opinię!

×