Objawy
Może wystąpić jeden z następujących problemów podczas renderowania grafiki przy użyciu systemu Windows Presentation Foundation (WPF) w.NET Framework 3.5 z dodatkiem Service Pack 1 (SP1)-aplikacja oparta na.
Problem 1
Gdy zmieniasz wartość właściwości VisualBrush.Visual w aplikacji WPF, awarie aplikacji.
Problem 2
W wątku renderowania aplikacji WPF występuje przeciek pamięci, gdy wykonasz jedną z następujących czynności:
-
Renderowanie sceny 3D, który zawiera obiektu VisualBrush lub obiektu DrawingBrush za pomocą potoku renderowania programowego. Na przykład używasz potoku renderowania programowego gdy wykonasz jedną z następujących czynności:
-
Renderuj prezentację za pomocą klasy RenderTargetBitmap .
-
Drukowanie sceny.
-
Właściwość warstwy renderowania równa 0.
-
Renderuj prezentację przez połączenie pulpitu zdalnego.
-
-
Sceny renderowania przy użyciu klasy WriteableBitmap na komputerze, który nie używa systemu Windows Display Driver Model (WDDM).
-
Renderowania sceny przy użyciu rozmieszczony sąsiadująco obiektu VisualBrush lub obiektu DrawingBrush rozmieszczony sąsiadująco na komputerze, który nie używa WDDM za pomocą potoku renderowania sprzętowego.
Problem 3
Aplikacji WPF, które używają wielowarstwowe awarii systemu windows, gdy wykonasz jedną z następujących czynności:
-
Umieścić komputer, który korzysta z systemu Windows XP wyświetlania Driver Model (XPDDM) w stan wstrzymania, a następnie wznowieniu pracy komputera ze stanu wstrzymania.
-
Możesz przełączyć się do trybu pełnego ekranu konsoli w systemie Windows XP.
Przyczyna
Przyczyny 1
Ten problem występuje, ponieważ jest zwracany błąd rodzajowy z wątku renderowania, podczas operacji w wątku są sortowane nieprawidłowo. Te operacje powodują obiektów podrzędnych do odłączenia od obiektu nadrzędnego null.
Na przykład obiekt wizualny musi być usuwany z obiektu VisualBrush , zanim jest odłączana od obiektu VisualBrush . Jednak operacje usunięcia obiektu wizualne mogą być sortowane nieprawidłowo. W związku z tym obiekt wizualny odłączy się od obiektu nadrzędnego null.Przyczyny 2
Ten problem występuje z powodu błędu w wątku renderowania zliczanie.
Przyczyny 3
Ten problem występuje, ponieważ kod błędu Win32 jest obsługiwane niepoprawnie.
Rozwiązanie
Aby rozwiązać ten problem, należy zastosować pakiet poprawki opisanej w następującym artykule bazy wiedzy Microsoft Knowledge Base:2667241 Pakiet zbiorczy aktualizacji jest dostępna dla Windows Presentation Foundation (WPF) dla programu Microsoft.NET Framework 3.5
Więcej informacji
Informacje 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 występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.