Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Pentru a aplica acest set de remedieri rapide, mergeți la următorul articol din baza de cunoștințe și descărcați pachetul de remediere rapidă corectă:

2925383 2925383 pachet de remediere rapidă este disponibilă pentru .NET Framework 4.5.1 în Windows

Introducere

Acest articol descrie pachetul de remediere rapidă 2908385 care este disponibil pentru Microsoft .NET Framework 4.5.1. Pentru mai multe informații despre problema care rezolvă remedierea rapidă, consultați secțiunea "Mai multe informații".

Acest pachet de remediere rapidă este disponibilă pentru următoarele sisteme de operare:

  • Windows 8

  • Windows Server 2012


Mai multe informații

Informații despre remedierea rapidă

Un hotfix acceptat este acum disponibil de la Microsoft. Cu toate acestea, aceasta este scopul de a corecta numai problema descrisă în acest articol. Aplicați-o numai pe sistemele care întâmpină această problemă anume.

Pentru a rezolva această problemă, contactați serviciile de asistență pentru clienți Microsoft pentru a obține remedierea rapidă. Pentru o listă completă a numerelor de telefon ale serviciilor de asistență pentru clienți Microsoft și informații despre costurile de asistență, vizitați următorul site Web Microsoft:

http://support.microsoft.com/contactus/?ws=supportNotă În cazuri speciale, costurile implicate de obicei pentru apelurile de suport pot fi anulate dacă un specialist în asistență Microsoft stabilește că o anumită actualizare va rezolva problema. Se vor aplica costurile uzuale de asistenţă pentru întrebări suplimentare de asistenţă şi pentru probleme ce nu fac obiectul actualizării în cauză.

Cerințe preliminare

Pentru a aplica această remediere rapidă, trebuie să aveți 4.5.1 instalat .NET Framework.

Cerinţă de repornire

Trebuie să reporniți computerul după aplicarea acestei remedieri rapide, dacă se utilizează oricare dintre fișierele afectate. Vă recomandăm să închideţi toate aplicaţiile bazate pe .NET Framework înainte de a aplica această remediere rapidă.

Informații despre înlocuirea remedierilor rapide

Această remediere rapidă nu înlocuiește un pachet de remediere rapidă lansată anterior.


Probleme care se rezolvă acest set de remedieri rapide

Problema 1

Symptoms

Să presupunem că aveți invocă metoda Application.DoEvents() din rutina de tratare a evenimentului ValueChanged unui control NumericUpDown . De exemplu, utilizați următorul cod:private void numericUpDown1_ValueChanged(object sender, EventArgs e){
for (int i = 0; i < 10; i++)
{
Application.DoEvents();
Thread.Sleep(10);
}
}
Când sus sau în jos butonul săgeată este apăsat timp de câteva secunde, controlul creează un cronometru pentru a genera incremente repetate sau scade cu o unitate. În Application.DoEvents cicluri de cronometru este tratată din nou. Acest lucru provoacă un eveniment nou ValueChanged . Apoi, se introduce din nou cronometru cicluri de tratare a evenimentului. Când se lansează butonul mouse-ului, cronometrul este destroyed în rutina de tratare în partea de jos a stivei, dar apoi este reutilizată din nou ca stiva este fiind derulată de alte rutine de tratare. Acest lucru provoacă o excepție de referință nulă și o cădere.



Soluție

Pentru a rezolva această problemă, folosi BeginInvoke pentru a apela Application.DoEvents() asincron după evenimentul cronometru este procesat. De exemplu, utilizați următoarea categorie pentru a înlocui comportamentul implicit: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);
}
}
Notă În general, nu recomandăm că se introduce din nou un mesaj de buclă (Application.DoEvents) dintr-o rutină de tratare mesaje (ValueChanged este ridicat de rutină de tratare mesaje Timer.OnTick ), deoarece aceasta ar conduce la stack overflow. De exemplu, intervalul de controlul NumericUpDown este mare și utilizatorul ține apăsat butonul săgeată pentru o lungă perioadă de timp. Utilizați BeginInvoke pentru a evita stack overflow. Această remediere rapidă nu rezolvă această problemă.

Problema 2

Simptome

Copiere text formatat dintr-un document XPS lung poate dura câteva minute, în funcţie de poziţia de text în cadrul documentului și poate face ca aplicația să blocheze.

Cause

Această problemă apare deoarece unele declarații formatare necesită scanare document de la începutul până la selecția dorită. Aceste declarații sunt rare (provin elemente particularizate care au un atribut TextElementEditingBehaviorAttribute care nu este marcată ca IsTypographicOnly).

Logica este modificat în această remediere rapidă pentru a evita scanarea scump atunci când există aceste declarații apar în selecția dorită.

Problema 3

Simptome

O TextBlock Windows Presentation Foundation (WPF) nu poate afișa una sau mai multe caractere la finalul textului. Această problemă apare când următoarele condiții sunt adevărate:

  • TextWrapping sau TextTrimming este activat.

  • Padding este diferită de zero sau TextFormattingMode este "Display."

  • Lățimea nu este setată sau este setată la "Auto."

  • FontFamily, privind și anumite caractere din textul conduce la o lățime nefavorabile.

Cause

Această problemă se produce din cauza inexactitățile numerice (un tur off eroare) care pot apărea în timp ce calcul lățimea de text, conversia lățimea între sisteme coordonată intern, reprezentând padding și alinierea textul de pixeli limite pentru modul de afişare.

Protecție împotriva aceste tipuri de inexactitățile a fost adăugat la calcule, pentru a vă asigura că se va afișa toate caracterele pe care ar trebui să se afișeze.

Problema 4

Fixare obiecte pot provoca prea multă memorie heap fragmentation, provoacă o scădere a performanței. Această remediere furnizează reutilizare mai eficientă a memoriei tampon, care se minimizează fragmentarea de memorie heap.

Problema 5

Uneori, o aplicație se pot confrunta cu o excepție violare de acces în timpul AppDomain închide după o operațiune de colectare deșeuri de fundal.

Problema 6

Instrumente de diagnosticare care face IL Instrumentație prin utilizarea API profilare poate provoca excepție netratată următoare pentru a fi lansată de la common language runtime (CLR):

0X80131401 "= SECURITY_E_INCOMPATIBLE_SHARE. Încărcare această asamblare ar produce un alt grant setată la alte cazuri.


În plus, procesul se blochează. Această problemă apare numai atunci când utilizați instrumentele de diagnosticare.

Problema 7

Când utilizați Windows Communication Foundation (WCF) 4.5 HttpMessageHandler extensibilitate punct (cunoscut și ca WCF HTTP canal), antet WWW-Authenticate poate fi setată pe HttpRequestMessage sau HttpResponseMessage. Aceasta se întâmplă deoarece nou punct de extensibilitate HttpMessageHandler utilizează un alt mecanism pentru tratarea anteturile.

După aplicarea acestei remedieri rapide, două mecanisme pentru a adăuga anteturi sunt puse la paritate și una ar trebui să poată adăuga WWW-Authenticate anteturi din nou.

Problema 8

O NullReferenceException excepţiei din metoda SqlInternalConnectionTds.BreakConnection . Această remediere rapidă rezolvă probleme de temporizare care duce la NullReferenceException excepție.

Problema 9

Simptome

Să presupunem că aveți o aplicație WCF care utilizează clasa BinaryMessageEncoder și encoder utilizează o înregistrare de text UTF-8 bazate pe [MC-NBFX]. Sau, să presupunem că aveți o aplicație WCF care utilizează metoda System.ServiceModel.Channels.Message.CreateBufferedCopy . Un mesaj este procesat care conține caractere în intervalul de U + 10000 la U + 10FFFF (inclusiv) care sunt reprezentate în UTF-8 ca o secvență de 4 octeți. În această situație, mesajul binare codificate se pot pierde și primiți următorul mesaj de eroare:

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

Când apare această problemă, clientul expiră fără un răspuns dacă aplicația WCF este auto-găzduit. Dacă aplicația WCF este găzduit de web ASP.NET (), clientul va primi o eroare de 500 server.

Cauza

Această problemă se produce din cauza o implementare internă detaliu care uneori alocă suficient spațiu când sunt decodificate secvențe de caractere UTF-8 4 octeți.

Rezolvare

Pentru a rezolva această problemă, aplicați remedierea rapidă. După ce aplicați remedierea rapidă, aplicația WCF va aștepta următoarea
Metoda de citire a decode caracterele dacă există suficient spațiu în tampon de ieșire pentru decode multioctet caractere Unicode.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×