Sintomas
Você pode enfrentar um dos seguintes problemas ao renderizar elementos gráficos usando o Windows Presentation Foundation (WPF) em um aplicativo baseado no .NET Framework 3.5 Service Pack 1 (SP1).
Problema 1
Quando você altera o valor da propriedade VisualBrush.Visual em um aplicativo WPF, o aplicativo falha.
Problema 2
Ocorre um vazamento de memória no thread de renderização de um aplicativo WPF quando você executa uma das seguintes ações:
Você usa o pipeline de renderização de software para renderizar uma cena 3D que inclui um objeto VisualBrush ou um objeto DrawingBrush. Por exemplo, você está usando o pipeline de renderização de software ao executar uma das seguintes ações:
- Você renderiza a cena usando a classe RenderTargetBitmap.
- Você imprime a cena.
- Você define a propriedade de camada de renderização como 0.
- Você renderiza a cena em uma conexão de área de trabalho remota.
Você renderiza uma cena usando a classe WriteableBitmap em um computador que não usa o Windows Display Driver Model (WDDM).
Você usa o pipeline de renderização de hardware para renderizar uma cena usando um objeto VisualBrush lado a lado ou um objeto DrawingBrush lado a lado em um computador que não usa o WDDM.
Problema 3
Aplicativos WPF que usam janelas em camadas falham quando você executa uma das seguintes ações:
- Você coloca um computador que usa o Windows XP Display Driver Model (XPDDM) em modo de espera e, em seguida, retoma o computador do modo de espera.
- Você alterna para o modo de console de tela inteira no Windows XP.
Causa
Causa 1
Esse problema ocorre porque um erro genérico é retornado de um thread de renderização quando as operações no thread são ordenadas incorretamente. Essas operações fazem com que os objetos filho se desanexem de um objeto pai nulo.
Por exemplo, um objeto Visual deve ser removido de um objeto VisualBrush antes de ser desanexado do objeto VisualBrush. No entanto, as operações para remover o objeto Visual podem ser ordenadas incorretamente. Portanto, o objeto Visual se separa de um objeto pai nulo.
Causa 2
Esse problema ocorre devido a um erro de contagem de referência no thread de renderização.
Causa 3
Esse problema ocorre porque um código de erro Win32 é tratado incorretamente.
Resolução
Para resolver esse problema, aplique o pacote de hotfix descrito no seguinte artigo da Base de Dados de Conhecimento Microsoft:
2667241 Um pacote cumulativo de atualizações está disponível para Windows Presentation Foundation (WPF) para o Microsoft .NET Framework 3.5
Mais informações
Saída da pilha
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)
Status
A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".