FIX: Memorie leak apare într-o aplicație de WPF atunci când se face referire un obiect de pensulă utilizând un DynamicResource

Traduceri articole Traduceri articole
ID articol: 2651992 - View products that this article applies to.
Măriți totul | Reduceți totul

În această pagină

SIMPTOME

Luați în considerare următorul scenariu:
  • Creați o aplicație Microsoft Windows Presentation Foundation (WPF) că obiectivele Microsoft.NET Framework 3.0 sau Microsoft.NET Framework 3.5.
  • Aplicarea definește un obiect de pensulă și un obiect de culoare în fișierul XAML cererii.
    • Obiectul pensula utilizează un DynamicResource de referin?ă culoarea obiectului. De exemplu,
      <Application.Resources>
      
      <Color x:Key="color1">#ff4050ff</Color>
      
      <SolidColorBrush x:Key="brush1" Color="{DynamicResource color1}"/>
      
      </Application.Resources>
    • Obiectul de pensulă este referit ca un DynamicResource într-o fereastră de WPF sau un control utilizator sau alt obiect. De exemplu,
      <Window x:Class="WpfApplication6.Window1"
      
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      
      Title="Window1" Height="300" Width="300" Background="{DynamicResource brush1}">
      
      </Window>
  • Deschideți sau închideți instanțele fereastra sau controlul utilizatorului.

În acest scenariu, instanțe sunt înrădăcinate în heap (GC) colectate de gunoi și nu a lansat. A lungul timpului, o irosire de memorie apare ca mai multe și mai multe instanțe ale fereastra sau controlul utilizator sunt create. În cele din urmă, veți primi un System.OutOfMemoryException excepție.

Notă Această problemă nu se produce atunci când aplicarea obiective Microsoft.NET Framework 4.

CAUZĂ

Această problemă apare deoarece WPF run-time fire o rutină de tratare evenimente interne pentru ResourceReferenceExpressionobiect care este asociat cu resursa care utilizează fereastra sau controlul utilizatorului. Această referință handler eveniment nu este eliminat, atunci când fereastra sau controlul utilizatorului este închis și stabilit la null.

REZOLUȚIE

Informații despre remedierea rapidă

O remediere rapidă acceptate este acum disponibilă de la Microsoft. Cu toate acestea, acesta este destinat pentru a corecta numai problemei descrise î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 serviciilor de asistență pentru clienți Microsoft și informații referitoare la costul suportului, vizitați următorul site Web Microsoft:
http://support.Microsoft.com/contactus/?ws=support
Notă În cazuri speciale, taxele care sunt suportate de obicei pentru apelurile de asistență pot fi anulate dacă un profesionist de suport Microsoft stabilește că o anumită actualizare va rezolva problema. Costurile uzuale de sprijin va aplica sprijin suplimentar întrebări și probleme care nu se califică pentru actualizarea specifice în cauză.

Cerințe preliminare

Pentru a aplica această remediere rapidă, trebuie să aveți Microsoft.NET Framework 3.5.1 instalat pe un computer care execută una dintre următoarele sisteme de operare:
  • Windows 7 Service Pack 1 (SP1)
  • Windows Server 2008 R2 Service Pack 1 (SP1)


Cerință de repornire

Trebuie să reporniți computerul după aplicarea acestei remedieri rapide dacă fișierele afectate sunt utilizate.

Informații despre fișier

Versiunea globală a acestui remediu rapid are atributele de fișier (sau atribute de fișier mai recente) enumerate în următorul tabel. Datele și orele acestor fișiere sunt enumerate în timp Universal coordonat (TUC). Când vizualizați informațiile de fișier, acesta este convertit la ora locală. Pentru a afla diferența între timpul local și UTC, utilizați Fus orar fila în Data și ora element din panoul de Control.

Fsau toate sprijinite x 86-based versiunile de Windows 7
Reduceți tabelulMăriți tabelul
Numele fișieruluiVersiunea fișieruluiDimensiunea fișieruluiDataTimpPlatforma
Presentationframework.dll3.0.6920.57385,283,84016-Dec-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Dec-201101: 49x 86
Presentationcore.dll3.0.6920.57384,218,88016-Dec-201101: 49x 86
Presentationframework.dll3.0.6920.57385,283,84016-Dec-201101: 49x 86
Presentationhostdll.dll3.0.6920.5738131,36016-Dec-201101: 49x 86
Presentationhost.exe4.0.40305.0296,22416-Dec-201101: 49x 86
Presentationhostproxy.dll4.0.31106.0100,13616-Dec-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Dec-201101: 49x 86

Fsau toate sprijinite x 64-bază versiunile de Windows 7 și Windows Server 2008 r2
Reduceți tabelulMăriți tabelul
Numele fișieruluiVersiunea fișieruluiDimensiunea fișieruluiDataTimpPlatforma
Presentationcore.dll3.0.6920.57383,998,72016-Dec-201101: 42x 64
Presentationframework.dll3.0.6920.57384,640,76816-Dec-201101: 42x 86
Presentationhostdll.dll3.0.6920.5738172,32016-Dec-201101: 42x 64
Presentationhost.exe4.0.31106.0321,31216-Dec-201101: 42x 64
Presentationhostproxy.dll4.0.31106.0110,88816-Dec-201101: 42x 64
Windowsbase.dll3.0.6920.57381,114,11216-Dec-201101: 42x 86
Presentationframework.dll3.0.6920.57385,283,84016-Dec-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Dec-201101: 49x 86
Presentationcore.dll3.0.6920.57384,218,88016-Dec-201101: 49x 86
Presentationframework.dll3.0.6920.57385,283,84016-Dec-201101: 49x 86
Presentationhostdll.dll3.0.6920.5738131,36016-Dec-201101: 49x 86
Presentationhost.exe4.0.40305.0296,22416-Dec-201101: 49x 86
Presentationhostproxy.dll4.0.31106.0100,13616-Dec-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Dec-201101: 49x 86



REMEDIERE

Pentru a soluționa această problemă, utilizați una dintre următoarele metode:
  • Utilizarea unuiStaticResource de referin?ă culoarea obiectului în obiectul de pensulă. De exemplu, modificați prima parte a codului în fișierul XAML menționat în secțiunea „Simptome"la următoarele:
    <Color x:Key="color1">#ff4050ff</Color> 
    <SolidColorBrush x:Key="brush1" Color="{StaticResource color1}"></SolidColorBrush>
  • Setx: partajat opțiunea de a false dacă DynamicResource este utilizat. De exemplu, modificați prima parte a codului în fișierul XAML menționat în secțiunea „Simptome"la următoarele:
    <Application.Resources>
            <Color x:Key="color1">#ff4050ff</Color>
            <SolidColorBrush x:Key="brush1" x:Shared="False" Color="{DynamicResource color1}" />
        </Application.Resources>



REFERINȚE

Pentru mai multe informații despre DynamicResource extensie de marcare, vizitați următoarele site-ul MSDN:
Informații generale despre extinderea markup DynamicResource
Pentru mai multe informații despre WPF pensulelor, vizitați următoarele site-ul MSDN:
Informații generale despre WPF pensule

STARE

Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „se aplică la".

Proprietă?i

ID articol: 2651992 - Ultima examinare: 10 ianuarie 2012 - Revizie: 1.0
SE APLICĂ LA:
  • Microsoft .NET Framework 3.0
  • Microsoft .NET Framework 3.0 Service Pack 1
  • Microsoft .NET Framework 3.0 Service Pack 2
  • Microsoft .NET Framework 3.5
  • Microsoft .NET Framework 3.5 Service Pack 1
Cuvinte cheie: 
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbmt KB2651992 KbMtro
Traducere automată
IMPORTANT: Acest articol a fost tradus de software-ul de traducere automată Microsoft, si nu de un traducător. Microsoft vă oferă atât articole traduse de persoane, cât și articole traduse automat, astfel incat aveti access la toate articolele din Baza noastră de informatii în limba dvs. materna. Totuși, un articol tradus automat nu este întotdeauna perfect. Acesta poate conține greșeli de vocabular, sintaxă sau gramatică, la fel cum un vorbitor străin poate face greșeli vorbind limba dvs. materna. Compania Microsoft nu este responsabilă pentru nici o inexactitate, eroare sau daună cauzată de traducerea necorespunzătoare a conținutului sau de utilizarea traducerii necorespunzătoare de către clienții nostri. De asemenea, Microsoft actualizează frecvent software-ul de traducere automată.
Face?i clic aici pentru a vizualiza versiunea în limba engleză a acestui articol:2651992

Trimite?i feedback

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com