POPRAWKA: Podczas renderowania grafiki przy użyciu technologii Windows Presentation Foundation (WPF) w aplikacji opartej na platformie .NET Framework 3.5 z dodatkiem SP1 może wystąpić kilka problemów

Dotyczy
.NET Framework 3.5 Service Pack 1

      
    

Objawy

Podczas renderowania grafiki przy użyciu platformy Windows Presentation Foundation (WPF) w aplikacji opartej na platformie .NET Framework 3.5 z dodatkiem Service Pack 1 (SP1) może wystąpić jeden z następujących problemów.

Zeszyt 1

Po zmianie wartości właściwości VisualBrush.Visual w aplikacji WPF aplikacja ulega awarii.

Zeszyt 2

Przeciek pamięci występuje w wątku renderowania aplikacji WPF podczas wykonywania jednej z następujących akcji:

  • Potok renderowania programowego służy do renderowania sceny 3D, która zawiera obiekt VisualBrush lub obiekt DrawingBrush. Na przykład potok renderowania programowego jest używany podczas wykonywania jednej z następujących akcji:

    • Scena jest renderowana przy użyciu klasy RenderTargetBitmap.
    • Drukujesz scenę.
    • Właściwość warstwy renderowania jest ustawiana na 0.
    • Scena jest renderowana za pośrednictwem połączenia pulpitu zdalnego.
  • Scena jest renderowana przy użyciu klasy WriteableBitmap na komputerze, na którym nie jest używany Windows Display Driver Model (WDDM).

  • Potok renderowania sprzętowego służy do renderowania sceny przy użyciu sąsiadującego obiektu VisualBrush lub sąsiadującego obiektu DrawingBrush na komputerze, który nie korzysta z WDDM.

          

Zeszyt 3

Aplikacje WPF używające okien warstwowych ulegają awarii podczas wykonywania jednej z następujących akcji:

  • Przełączono komputer ze sterownikiem Windows XP Display Driver Model (XPDDM) w stan wstrzymania, a następnie wznowiono jego działanie.
  • Przełączono na pełnoekranowy tryb konsoli w systemie Windows XP.

Przyczyna

Przyczyna 1

Ten problem występuje, ponieważ ogólny błąd jest zwracany z wątku renderowania, gdy operacje w wątku są niepoprawnie uporządkowane. Te operacje powodują odłączenie obiektów podrzędnych od obiektu nadrzędnego o wartości null.

Na przykład obiekt Visual musi zostać usunięty z obiektu VisualBrush, zanim zostanie odłączony od obiektu VisualBrush. Jednak operacje usuwania obiektu wizualnego mogą być nieprawidłowo uporządkowane. W związku z tym obiekt Visual odłącza się od pustego obiektu nadrzędnego.

Przyczyna 2

Ten problem występuje z powodu błędu zliczania odwołań w wątku renderowania.

Przyczyna 3

Ten problem występuje, ponieważ kod błędu Win32 jest niepoprawnie obsługiwany.

Rozwiązanie

Aby rozwiązać ten problem, należy zastosować pakiet poprawek opisany w następującym artykule z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2667241 Dostępny jest pakiet zbiorczy aktualizacji Windows Presentation Foundation (WPF) dla systemu Microsoft .NET Framework 3.5

Więcej informacji

Dane wyjściowe stosu

System.InvalidOperationException: An unspecified error occurred on the render thread.
at System.Windows.Media.MediaContext.NotifyPartitionIsZombie(Int32 failureCode)
at System.Windows.Media.MediaContext.NotifyChannelMessage()
at System.Windows.Interop.HwndTarget.HandleMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Interop.HwndSource.HwndTargetFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Boolean isSingleParameter)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Boolean isSingleParameter, Delegate catchHandler)

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.