CORRECTIF : Vous pouvez rencontrer plusieurs problèmes lorsque vous restituez des graphiques à l’aide de Windows Presentation Foundation (WPF) dans une application basée sur.NET Framework 3.5 SP1

S’applique à : .NET Framework 3.5 Service Pack 1



Symptômes


Vous pouvez rencontrer l’un des problèmes suivants lorsque vous restituez des graphiques à l’aide de Windows Presentation Foundation (WPF) dans.NET Framework 3.5 Service Pack 1 (SP1)-application de base.


Problème 1

Lorsque vous modifiez la valeur de la propriété VisualBrush.Visual dans une application WPF, l’application se bloque.

Problème 2

Une fuite de mémoire se produit dans le thread de rendu d’une application WPF, lorsque vous effectuez l’une des actions suivantes :
  • Vous utilisez le pipeline de rendu logiciel pour le rendu d’une scène 3D qui inclut un objet VisualBrush ou un objet DrawingBrush . Par exemple, vous utilisez le pipeline de rendu logiciel lorsque vous effectuez l’une des actions suivantes :
    • Vous restituez la scène à l’aide de la classe de RenderTargetBitmap .
    • Vous imprimez la scène.
    • Vous définissez la propriété de couche de rendu 0.
    • Vous restituez la scène via une connexion Bureau à distance.
  • Rendu d’une scène à l’aide de la classe WriteableBitmap sur un ordinateur qui n’utilise pas le modèle de pilote d’affichage Windows (WDDM).
  • Le pipeline de rendu matériel vous permet de rendre une scène à l’aide d’un objet VisualBrush en mosaïque ou un objet DrawingBrush en mosaïque sur un ordinateur qui n’utilise pas le WDDM.

Problème 3

Les applications WPF qui utilisent en couche de blocage de windows lorsque vous effectuez l’une des actions suivantes :
  • Vous mettez un ordinateur qui utilise le modèle de pilote d’affichage (XPDDM) Windows XP en mode veille, puis faire sortir l’ordinateur du mode veille.
  • Vous basculez vers le mode plein écran sous Windows XP.

Cause


Cause 1

Ce problème se produit parce qu’une erreur générique qui est retournée à partir d’un thread de rendu lorsque les opérations dans le thread sont triées incorrectement. Ces opérations entraînent des objets enfants pour vous déconnecter d’un objet parent null.

Par exemple, un objet visuel doit être supprimé d’un objet de VisualBrush avant elle est détachée de l’objet VisualBrush . Toutefois, les opérations pour supprimer l’objet visuel peuvent être commandées incorrecte. Par conséquent, l’objet visuel se détache d’un objet parent null.

Cause 2

Ce problème se produit en raison d’une erreur dans le thread de rendu de décompte de références.

Cause 3

Ce problème se produit car un code d’erreur Win32 est géré de façon incorrecte.

Résolution


Pour résoudre ce problème, appliquez le correctif logiciel qui est décrit dans l’article suivant de la Base de connaissances Microsoft :

2667241 Un correctif cumulatif est disponible pour Windows Presentation Foundation (WPF) pour Microsoft.NET Framework 3.5

Plus d'informations


Sortie de pile
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)

État


Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».