Oprava: Nevrací paměť WPF aplikace při odkazování na objekt stopy pomocí DynamicResource

Překlady článku Překlady článku
ID článku: 2651992 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

Zvažte následující scénář:
  • Vytvoření aplikace Microsoft Windows Presentation Foundation (WPF), která se zaměřuje Microsoft.NET Framework 3.0 nebo Microsoft.NET Framework 3.5.
  • Aplikace definuje objekt štětec a barvu objektu v XAML souboru aplikace.
    • Používá objekt stopy DynamicResource jako odkaz na objekt barvu. Například
      <Application.Resources>
      
      <Color x:Key="color1">#ff4050ff</Color>
      
      <SolidColorBrush x:Key="brush1" Color="{DynamicResource color1}"/>
      
      </Application.Resources>
    • Stopy objekt se odkazuje jako DynamicResource v okně WPF nebo ovládací prvek uživatele nebo jiný objekt. Například
      <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>
  • Otevřete nebo zavřete instance okna nebo uživatelský ovládací prvek.

V tomto případě instance v haldě odpadků shromážděné (GC) a není uvolněna. V průběhu času dojde k nevracení paměti jsou vytvořeny více instancí okna nebo uživatelský ovládací prvek. Nakonec, zobrazí System.OutOfMemoryException výjimka.

Poznámka: Tento problém nenastane, pokud cíle aplikace Microsoft.NET Framework, 4.

Příčina

K tomuto problému dochází, protože spuštění WPF dráty obslužné vnitřní událost ResourceReferenceExpressionobjekt, který je přidružen k prostředku, který pomocí okna nebo uživatelský ovládací prvek. Tento odkaz obslužné rutiny událostí není odebrána při okna nebo uživatelský ovládací prvek je uzavřené a nastavit na hodnotu null.

Řešení

Informace o opravě hotfix

Podporovaná oprava hotfix je k dispozici od společnosti Microsoft. Je však určena pouze problém, který popisuje tento článek. Použijte ji pouze u systémů, které dochází k problému.

Chcete-li tento problém vyřešit, obraťte se na opravu hotfix služeb technické podpory společnosti Microsoft. Úplný seznam telefonních čísel služeb technické podpory společnosti Microsoft a informace o cenách podpory naleznete na následujícím webu společnosti Microsoft:
http://support.microsoft.com/contactus/?ws=support
Poznámka: Ve zvláštních případech mohou být stornovány poplatky za podpory účtovány, pokud pracovník technické podpory společnosti Microsoft zjistí, že konkrétní aktualizace vyřeší váš problém. Výdaje na podporu se obvykle týkají dalších otázek a problémů, které nelze vyřešit určitou konkrétní aktualizací.

Požadavky

Chcete-li použít tuto opravu hotfix, musí mít Microsoft.NET Framework 3.5.1 nainstalovány v počítači, který je spuštěn jeden z následujících operačních systémů:
  • Aktualizace Service Pack 1 (SP1) pro systém Windows 7
  • Windows Server 2008 R2 Service Pack 1 (SP1)


Požadavek na restartování

Po restartování počítače po instalaci této opravy hotfix, pokud se používají ohrožené soubory.

Informace o souboru

Globální verze této opravy hotfix má atributy souborů (nebo novější) uvedené v následující tabulce. Kalendářní data a časy jednotlivých souborů jsou uvedeny koordinovaný světový čas (UTC). Při zobrazení informací o souboru je převeden na místní čas. Rozdíl mezi místním ČASEM a časem Časové pásmo karty v Datum a čas položky v Ovládacích panelech.

Fnebo všechny podporované-verze x 86 systému Windows 7
Zmenšit tuto tabulkuRozšířit tuto tabulku
Název souboruVerze souboruVelikost souboruDatumČasPlatforma
Presentationframework.dll3.0.6920.57385,283,84016. Prosince 201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616. Prosince 201101: 49x 86
Presentationcore.dll3.0.6920.57384,218,88016. Prosince 201101: 49x 86
Presentationframework.dll3.0.6920.57385,283,84016. Prosince 201101: 49x 86
Presentationhostdll.dll3.0.6920.5738131,36016. Prosince 201101: 49x 86
Presentationhost.exe4.0.40305.0296,22416. Prosince 201101: 49x 86
Presentationhostproxy.dll4.0.31106.0100,13616. Prosince 201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616. Prosince 201101: 49x 86

Fnebo všechny podporované 64bitové verze systému Windows 7 a Windows Server 2008 R x2
Zmenšit tuto tabulkuRozšířit tuto tabulku
Název souboruVerze souboruVelikost souboruDatumČasPlatforma
Presentationcore.dll3.0.6920.57383,998,72016. Prosince 201101: 42x 64
Presentationframework.dll3.0.6920.57384,640,76816. Prosince 201101: 42x 86
Presentationhostdll.dll3.0.6920.5738172,32016. Prosince 201101: 42x 64
Presentationhost.exe4.0.31106.0321,31216. Prosince 201101: 42x 64
Presentationhostproxy.dll4.0.31106.0110,88816. Prosince 201101: 42x 64
Windowsbase.dll3.0.6920.57381,114,11216. Prosince 201101: 42x 86
Presentationframework.dll3.0.6920.57385,283,84016. Prosince 201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616. Prosince 201101: 49x 86
Presentationcore.dll3.0.6920.57384,218,88016. Prosince 201101: 49x 86
Presentationframework.dll3.0.6920.57385,283,84016. Prosince 201101: 49x 86
Presentationhostdll.dll3.0.6920.5738131,36016. Prosince 201101: 49x 86
Presentationhost.exe4.0.40305.0296,22416. Prosince 201101: 49x 86
Presentationhostproxy.dll4.0.31106.0100,13616. Prosince 201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616. Prosince 201101: 49x 86



Jak potíže obejít

Chcete-li tento problém vyřešit, použijte jednu z následujících metod:
  • PoužitíStaticResource jako odkaz na objekt barvy v objektu stopy. Například změňte první část v XAML soubor, který je uveden v části "Příznaky" následující kód:
    <Color x:Key="color1">#ff4050ff</Color> 
    <SolidColorBrush x:Key="brush1" Color="{StaticResource color1}"></SolidColorBrush>
  • Nastavitx: sdílené možnost false, pokud DynamicResource je používán. Například změňte první část v XAML soubor, který je uveden v části "Příznaky" následující kód:
    <Application.Resources>
            <Color x:Key="color1">#ff4050ff</Color>
            <SolidColorBrush x:Key="brush1" x:Shared="False" Color="{DynamicResource color1}" />
        </Application.Resources>



Odkazy

Další informace týkající DynamicResource rozšíření značky, navštivte následující web služby MSDN:
Obecné informace o rozšíření značky DynamicResource
Další informace o WPF stopy na následujícím webu MSDN:
Obecné informace o WPF stopy

Prohlášení

Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části "Platí pro".

Vlastnosti

ID článku: 2651992 - Poslední aktualizace: 10. ledna 2012 - Revize: 1.0
Informace v tomto článku jsou určeny pro produkt:
  • 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
Klíčová slova: 
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbmt KB2651992 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:2651992

Dejte nám zpětnou vazbu

 

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