Poprawka: Podczas występuje przeciek pamięci w aplikacji WPF obiektu pędzla się odwoływać przy użyciu DynamicResource

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 2651992 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Symptomy

Rozważmy następujący scenariusz:
  • Można utworzyć aplikacji Microsoft Windows Presentation Foundation (WPF), który jest przeznaczony dla systemu Microsoft.NET Framework 3.0 lub Microsoft.NET Framework 3.5.
  • Stosowania definiuje obiekt pędzla i obiekt kolorów w pliku XAML aplikacji.
    • Używa obiektu pędzla DynamicResource Aby odwołać się za kolor obiektu. Na przykład,
      <Application.Resources>
      
      <Color x:Key="color1">#ff4050ff</Color>
      
      <SolidColorBrush x:Key="brush1" Color="{DynamicResource color1}"/>
      
      </Application.Resources>
    • Obiekt pędzla jest określany jako DynamicResource w oknie WPF lub kontrola użytkownika lub innego obiektu. Na przykład,
      <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>
  • Otworzyć lub zamknąć instancji okna lub kontroli użytkownika.

W tym scenariuszu wystąpienia są ukorzenione w stosie (GC) zebrane garbage i nie została wydana. Czasem występuje przeciek pamięci, jak coraz więcej wystąpień okna lub kontrolki użytkownika są utworzone. Ostatecznie, odbierania System.OutOfMemoryException wyjątek.

Uwaga Ten problem występuje, gdy aplikacja jest przeznaczony dla systemu Microsoft.NET Framework, 4.

Przyczyna

Ten problem występuje, ponieważ WPF run-time przewody obsługi zdarzeń wewnętrznych ResourceReferenceExpressionobiekt, który jest skojarzony z zasobem, który używa okna lub kontroli użytkownika. To odwołanie do programu obsługi zdarzeń nie jest usuwana, gdy w oknie lub kontrola użytkownika jest zamknięte i ustaw na wartość null.

Rozwiązanie

Informacje o poprawce

Obsługiwana poprawka jest teraz udostępniana przez firmę Microsoft. Jednak jest ona przeznaczona do rozwiązania problemu, który w tym artykule opisano. Stosuje się tylko w systemach, w których występuje ten problem.

Aby rozwiązać ten problem, skontaktuj się z biurem obsługi klienta firmy Microsoft w celu uzyskania poprawki. Pełną listę numerów telefonów technicznej firmy oraz informacje o pomocy technicznej odwiedź następującą witrynę sieci Web firmy Microsoft:
http://support.microsoft.com/contactus/?ws=support
Uwaga W szczególnych przypadkach opłaty telefonujący do pomocy technicznej mogą zostać anulowane, jeśli technicznej firmy Microsoft określa, że określonej aktualizacji problem można rozwiązać. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, które nie kwalifikują się do określonej aktualizacji.

Wymagania wstępne

Aby zastosować tę poprawkę, program Microsoft.NET Framework 3.5.1 zainstalowane na komputerze, na którym jest uruchomiony jeden z następujących systemów operacyjnych:
  • Dodatek Service Pack 1 (SP1) dla systemu Windows 7
  • Dodatek Service Pack 1 (SP1) dla systemu Windows Server 2008 R2


Wymaganie dotyczące ponownego uruchomienia

Po zastosowaniu tej poprawki, jeśli są używane pliki podlegające usterce, należy ponownie uruchomić komputer.

Informacje o pliku

Wersja globalna tej poprawki ma atrybuty pliku (lub nowsze) wymienione w poniższej tabeli. Daty i godziny odpowiadające tym plikom są wyświetlane w formacie uniwersalnego czasu koordynowanego (UTC). Podczas przeglądania informacji o pliku jest konwertowane na czas lokalny. Aby zobaczyć różnicę między czasem UTC i czasem lokalnym, należy użyć Strefa czasowa Karta w Data i godzina element w Panelu sterowania.

Flub wszystkie obsługiwane x 86 wersje systemu Windows 7
Zwiń tę tabelęRozwiń tę tabelę
Nazwa plikuWersja plikuRozmiar plikuDataCzasPlatforma
Presentationframework.dll3.0.6920.57385,283,84016-Gru-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Gru-201101: 49x 86
Presentationcore.dll3.0.6920.57384,218,88016-Gru-201101: 49x 86
Presentationframework.dll3.0.6920.57385,283,84016-Gru-201101: 49x 86
Presentationhostdll.dll3.0.6920.5738131,36016-Gru-201101: 49x 86
Presentationhost.exe4.0.40305.0296,22416-Gru-201101: 49x 86
Presentationhostproxy.dll4.0.31106.0100,13616-Gru-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Gru-201101: 49x 86

Flub wszystkich obsługiwanych 64-bitowych wersji systemu Windows 7 i Windows Server 2008 R x2
Zwiń tę tabelęRozwiń tę tabelę
Nazwa plikuWersja plikuRozmiar plikuDataCzasPlatforma
Presentationcore.dll3.0.6920.57383,998,72016-Gru-201101: 42x 64
Presentationframework.dll3.0.6920.57384,640,76816-Gru-201101: 42x 86
Presentationhostdll.dll3.0.6920.5738172,32016-Gru-201101: 42x 64
Presentationhost.exe4.0.31106.0321,31216-Gru-201101: 42x 64
Presentationhostproxy.dll4.0.31106.0110,88816-Gru-201101: 42x 64
Windowsbase.dll3.0.6920.57381,114,11216-Gru-201101: 42x 86
Presentationframework.dll3.0.6920.57385,283,84016-Gru-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Gru-201101: 49x 86
Presentationcore.dll3.0.6920.57384,218,88016-Gru-201101: 49x 86
Presentationframework.dll3.0.6920.57385,283,84016-Gru-201101: 49x 86
Presentationhostdll.dll3.0.6920.5738131,36016-Gru-201101: 49x 86
Presentationhost.exe4.0.40305.0296,22416-Gru-201101: 49x 86
Presentationhostproxy.dll4.0.31106.0100,13616-Gru-201101: 49x 86
Windowsbase.dll3.0.6920.57381,253,37616-Gru-201101: 49x 86



Obejście problemu

Aby obejść ten problem, należy użyć jednej z następujących metod:
  • UżyjStaticResource Aby odwołać się za kolor obiektu w obiekcie pędzla. Na przykład zmienić pierwszej części kodu w pliku XAML, który jest wymieniony w sekcji "Symptomy" do następującego:
    <Color x:Key="color1">#ff4050ff</Color> 
    <SolidColorBrush x:Key="brush1" Color="{StaticResource color1}"></SolidColorBrush>
  • Ustawx: udostępnione opcja false jeśli DynamicResource jest używany. Na przykład zmienić pierwszej części kodu w pliku XAML, który jest wymieniony w sekcji "Symptomy" do następującego:
    <Application.Resources>
            <Color x:Key="color1">#ff4050ff</Color>
            <SolidColorBrush x:Key="brush1" x:Shared="False" Color="{DynamicResource color1}" />
        </Application.Resources>



Materiały referencyjne

Aby uzyskać więcej informacji na temat DynamicResource rozszerzenie adiustacji, odwiedź następującą witrynę sieci Web MSDN:
Ogólne informacje o rozszerzeniu markup DynamicResource
Aby uzyskać więcej informacji na temat pędzle WPF odwiedź następującą witrynę sieci Web MSDN:
Ogólne informacje na temat WPF pędzle

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft, które są wymienione w sekcji "Stosuje się do".

Właściwości

Numer ID artykułu: 2651992 - Ostatnia weryfikacja: 10 stycznia 2012 - Weryfikacja: 1.0
Informacje zawarte w tym artykule dotyczą:
  • 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
Słowa kluczowe: 
kbqfe kbhotfixserver kbfix kbexpertiseadvanced kbsurveynew kbmt KB2651992 KbMtpl
Przetłumaczone maszynowo
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Anglojęzyczna wersja tego artykułu to:2651992

Przekaż opinię

 

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