REVISIÓN: Puede experimentar varios problemas cuando representar gráficos mediante el uso de Windows Presentation Foundation (WPF) en una aplicación basada en.NET Framework 3.5 SP1

Se aplica a: .NET Framework 3.5 Service Pack 1



Síntomas


Puede experimentar uno de los siguientes problemas cuando representar gráficos mediante el uso de Windows Presentation Foundation (WPF) en.NET Framework 3.5 Service Pack 1 (SP1)-aplicación basada en.


Problema 1

Cuando cambia el valor de la propiedad VisualBrush.Visual en una aplicación WPF, se bloquea la aplicación.

Problema 2

Se produce una pérdida de memoria en el subproceso de representación de una aplicación WPF cuando realiza alguna de las siguientes acciones:
  • Utilice la canalización de representación de software para representar una escena 3D que incluye un objeto VisualBrush o un objeto DrawingBrush . Por ejemplo, utiliza la canalización de representación de software cuando realiza alguna de las siguientes acciones:
    • La escena se representa utilizando la clase RenderTargetBitmap .
    • Imprimir la escena.
    • Establezca la propiedad de nivel de representación 0.
    • Presentar la escena con una conexión de escritorio remoto.
  • Representación de una escena mediante la clase WriteableBitmap en un equipo que no utiliza Windows Display Driver Model (WDDM).
  • Utilice la canalización de procesamiento de hardware para representar una escena mediante un objeto VisualBrush mosaico o un objeto DrawingBrush mosaico en un equipo que no utilice el WDDM.

Problema 3

Las aplicaciones de WPF que utilizan layered bloqueo de windows cuando realiza alguna de las siguientes acciones:
  • Pone un equipo que utiliza el modelo de controlador de pantalla (XPDDM) de Windows XP en modo de espera y, a continuación, reanudar el equipo desde la suspensión.
  • Cambie al modo de pantalla completa consola en Windows XP.

Causa


Causa 1

Este problema se produce porque un subproceso de representación devuelve un error genérico cuando las operaciones en el subproceso se ordenan incorrectamente. Estas operaciones hacen que los objetos secundarios desasociar de un objeto primario null.

Por ejemplo, un objeto Visual debe quitarse desde un objeto VisualBrush antes de que se separa del objeto VisualBrush . Sin embargo, se pueden ordenar correctamente las operaciones para quitar el objeto Visual . Por lo tanto, el objeto Visual se desasocia de un objeto primario null.

Causa 2

Este problema se produce debido a un error en el subproceso de representación de recuento de referencias.

Causa 3

Este problema se produce porque un código de error Win32 se controla correctamente.

Solución


Para resolver este problema, aplique el paquete de hotfix que se describe en el siguiente artículo de Microsoft Knowledge Base:

2667241 Un paquete acumulativo de actualizaciones está disponible para Windows Presentation Foundation (WPF) para Microsoft.NET Framework 3.5

Más información


Salida de pila
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)

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft que se enumeran en la sección "Aplicable a".