Sintomas
Você pode enfrentar um dos seguintes problemas ao renderizar gráficos usando Windows Presentation Foundation (WPF) no.NET Framework 3.5 Service Pack 1 (SP1)-com base no aplicativo.
Problema 1
Quando você alterar o valor da propriedade VisualBrush.Visual em um aplicativo WPF, o aplicativo trava.
Problema 2
Um vazamento de memória ocorre no thread de processamento de um aplicativo WPF quando você executar uma das ações a seguir:
-
Você pode usar o pipeline de renderização do software para processar uma cena 3D que inclui um VisualBrush objeto ou um DrawingBrush . Por exemplo, você estiver usando o pipeline de renderização de software quando você executar uma das ações a seguir:
-
Renderizar a cena, usando a classe RenderTargetBitmap .
-
Imprimir a cena.
-
Defina a propriedade de nível de renderização como 0.
-
Renderizar a cena através de uma conexão de área de trabalho remota.
-
-
Processar uma cena, usando a classe WriteableBitmap em um computador que não usa o Windows Driver WDDM (Display Model).
-
Você pode usar 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
Os aplicativos WPF que usam camadas travamento do windows quando você executar uma das ações a seguir:
-
Colocar um computador que usa o modelo de Driver de exibição (XPDDM) do Windows XP em modo de espera e, em seguida, reiniciar o computador em estado de espera.
-
Alterne para o modo tela inteira no Windows XP.
Causa
Causa 1
Esse problema ocorre porque um erro genérico é retornado de um thread de processamento quando as operações no segmento são ordenadas incorretamente. Essas operações causam objetos filho desconectar-se de um objeto pai nula.
Por exemplo, um objeto Visual deve ser removido de um objeto VisualBrush antes que ela é separada do objeto VisualBrush . No entanto, as operações para remover o objeto Visual podem ser encomendadas incorretamente. Portanto, o objeto Visual se desconecta de um objeto pai nula.
Causa 2
Esse problema ocorre devido a uma erro no thread de processamento de contagem de referência.
Causa 3
Esse problema ocorre porque um código de erro do Win32 é manipulado incorretamente.
Resolução
Para resolver esse problema, aplique o pacote de hotfix descrito no seguinte artigo da Base de Conhecimento Microsoft:
2667241 Uma atualização cumulativa está disponível para o Windows Presentation Foundation (WPF) para Microsoft.NET Framework 3.5
Mais informações
Saída de 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 confirma que este é um problema em seus produtos listados na seção "Aplica-se a".