Sintomas
Considere o seguinte cenário:
-
Executa uma aplicação Microsoft .NET Framework 3.5 Service Pack 1 (SP1) baseada no Windows Presentation Foundation (WPF).
-
A aplicação WPF utiliza o pipeline de composição de hardware.
-
A aplicação carrega e descarrega muitos domínios de aplicação que contêm um ou mais componentes de suplementoS WPF personalizados.
Neste cenário, a aplicação encontra uma exceção System.Runtime.InteropServices.COMException e, em seguida, a aplicação falha.
Resolução
Informações de correção
Está disponível uma correção suportada da Microsoft. No entanto, esta correção destina-se a corrigir apenas o problema descrito neste artigo. Aplique esta correção apenas a sistemas com este problema específico. Esta correção poderá receber testes adicionais. Por conseguinte, se não for gravemente afetado por este problema, recomendamos que aguarde pela próxima atualização de software que contém esta correção.
Para transferir esta correção a partir da Galeria de Código do MSDN, visite o seguinte site da Microsoft:http://code.msdn.microsoft.com/KB2276690Nota A Galeria de Código do MSDN apresenta os idiomas para os quais a correção está disponível. Se não vir o seu idioma listado, é porque a página de recursos da Galeria de Códigos não está disponível para esse idioma. Nota Se ocorrerem problemas adicionais ou se for necessária alguma resolução de problemas, poderá ter de criar um pedido de serviço separado. Os custos de suporte habituais serão aplicados a perguntas e problemas de suporte adicionais que não se qualificam para esta correção específica. Para obter uma lista completa dos números de telefone do Suporte ao Cliente e suporte da Microsoft ou para criar um pedido de serviço separado, visite o seguinte site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Pré-requisitos
Para aplicar esta correção, tem de ter o .NET Framework 3.5 Service Pack 1 (SP1) instalado.
Requisito de reinício
Não tem de reiniciar o computador depois de aplicar esta correção.
Informações sobre substituição de correções
Esta correção não substitui qualquer outra correção.
Informações de Ficheiro
A versão inglesa desta correção tem os atributos de ficheiro listados na tabela que se segue (ou atributos de ficheiro posteriores). As datas e horas destes ficheiros estão listadas no formato de Hora Universal Coordenada (UTC). Quando visualizar as informações dos ficheiros, estas serão convertidas na hora local. Para encontrar a diferença entre a hora UTC e a hora local, utilize o separador Fuso Horário no item Data e Hora no Painel de Controlo.
Para todas as versões suportadas baseadas em x86 do Windows Server 2003 e do Windows XP
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
02-Set-2010 |
01:32 |
x86 |
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
02-Set-2010 |
01:28 |
x86 |
Presentationhost.exe |
4.0.40305.0 |
295,264 |
02-Set-2010 |
01:28 |
x86 |
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
02-Set-2010 |
01:32 |
x86 |
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
02-Set-2010 |
01:32 |
x86 |
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
02-Set-2010 |
01:32 |
x86 |
Para todas as versões suportadas baseadas em x64 do Windows Server 2003 e do Windows XP
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
02-Set-2010 |
00:53 |
x64 |
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
02-Set-2010 |
00:48 |
x64 |
Presentationhost.exe |
4.0.31106.0 |
320,352 |
02-Set-2010 |
00:48 |
x64 |
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
02-Set-2010 |
00:53 |
x64 |
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
02-Set-2010 |
00:53 |
x64 |
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
02-Set-2010 |
00:53 |
x64 |
Para todas as versões suportadas baseadas em x86 do Windows Vista Service Pack 2 (SP2) e do Windows Server 2008 Service Pack 2 (SP2)
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
09-Set-2010 |
10:52 |
x86 |
Presentationfontcache.exe.config |
Não Aplicável |
161 |
03-Abr-2009 |
21:25 |
Não Aplicável |
Wpfgfx_v0300.dll |
3.0.6920.4003 |
1,736,024 |
17-Jun-2009 |
08:03 |
x86 |
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
09-Set-2010 |
10:52 |
x86 |
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
09-Set-2010 |
10:52 |
x86 |
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
09-Set-2010 |
10:52 |
x86 |
Para todas as versões suportadas baseadas em x64 do Windows Vista SP2 e do Windows Server 2008 SP2
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
09-Set-2010 |
10:52 |
x64 |
Presentationfontcache.exe.config |
Não Aplicável |
161 |
03-Abr-2009 |
20:58 |
Não Aplicável |
Wpfgfx_v0300.dll |
3.0.6920.4003 |
2,254,168 |
17-Jun-2009 |
08:03 |
x64 |
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
09-Set-2010 |
10:52 |
x64 |
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
09-Set-2010 |
10:52 |
x64 |
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
09-Set-2010 |
10:52 |
x64 |
Para todas as versões suportadas baseadas em x86 do Windows 7
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.5012 |
4,218,880 |
11-Set-2010 |
01:29 |
x86 |
Presentationfontcache.exe.config |
Não Aplicável |
161 |
10-Jun-2009 |
21:14 |
Não Aplicável |
Wpfgfx_v0300.dll |
3.0.6920.4902 |
1,736,536 |
10-Jun-2009 |
21:14 |
x86 |
Presentationframework.dll |
3.0.6920.5012 |
5,279,744 |
11-Set-2010 |
01:29 |
x86 |
Presentationhostdll.dll |
3.0.6920.5012 |
130,408 |
11-Set-2010 |
01:29 |
x86 |
Presentationhost.exe |
4.0.31106.0 |
295,264 |
11-Set-2010 |
01:29 |
x86 |
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
11-Set-2010 |
01:29 |
x86 |
Windowsbase.dll |
3.0.6920.5012 |
1,253,376 |
11-Set-2010 |
01:29 |
x86 |
Para todas as versões suportadas baseadas em x64 do Windows 7 e do Windows Server 2008 R2
Nome do ficheiro |
Versão do ficheiro |
Tamanho do ficheiro |
Data |
Hora |
Plataforma |
---|---|---|---|---|---|
Presentationcore.dll |
3.0.6920.5012 |
3,997,696 |
11-Set-2010 |
01:28 |
x64 |
Presentationfontcache.exe.config |
Não Aplicável |
161 |
10-Jun-2009 |
20:30 |
Não Aplicável |
Wpfgfx_v0300.dll |
3.0.6920.4902 |
2,255,176 |
10-Jun-2009 |
20:30 |
x64 |
Presentationframework.dll |
3.0.6920.5012 |
4,636,672 |
11-Set-2010 |
01:28 |
x64 |
Presentationhostdll.dll |
3.0.6920.5012 |
171,368 |
11-Set-2010 |
01:28 |
x64 |
Presentationhost.exe |
4.0.31106.0 |
320,352 |
11-Set-2010 |
01:28 |
x64 |
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
11-Set-2010 |
01:28 |
x64 |
Windowsbase.dll |
3.0.6920.5012 |
1,114,112 |
11-Set-2010 |
01:28 |
x64 |
Estado
A Microsoft confirmou que este problema ocorre nos produtos da Microsoft listados na secção "Aplica-se a".
Solução
Para resolver este problema, desative o pipeline de composição de hardware e, em seguida, ative o pipeline de composição de software.
Para desativar o pipeline de composição de hardware e ativar o pipeline de composição de software, utilize um dos seguintes métodos:-
Defina a enumeração System.Windows.Interop.RenderMode.
Segue-se um código de exemplo que define a enumeração System.Windows.Interop.RenderMode para ativar o pipeline de composição de software quando uma janela WPF é carregada:private void OnLoaded(object sender, EventArgs e)
{ System.Windows.Interop.HwndSource hwndSource = PresentationSource.FromVisual(this) as System.Windows.Interop.HwndSource; System.Windows.Interop.HwndTarget hwndTarget = hwndSource.CompositionTarget; hwndTarget.RenderMode = System.Windows.Interop.RenderMode.SoftwareOnly; } -
Defina a chave de registo DisableHWAcceleration .
Importante Esta secção, método ou tarefa contém passos que lhe indicam como modificar o registo. No entanto, poderão ocorrer problemas graves se modificar o registo de forma incorreta. Por conseguinte, certifique-se de que segue estes passos cuidadosamente. Para maior segurança, faça uma cópia de segurança do registo antes de o modificar. Deste modo, pode restaurar o registo se ocorrer um problema. Para mais informações sobre como fazer uma cópia de segurança e restaurar o registo, clique no número de artigo que se segue para ver o artigo na Base de Dados de Conhecimento Microsoft:322756 Como fazer uma cópia de segurança e restaurar o registo em Aviso do Windows Este método desativa o pipeline de composição de hardware para todas as aplicações WPF no computador. Por conseguinte, o método não é normalmente encorajado, exceto quando os clientes controlam os ambientes e não se importam com o efeito de todas as aplicações WPF.
-
Clique em Iniciar, clique em Executar, escreva regedit e, em seguida, prima ENTER.
-
Localize e, em seguida, clique na seguinte subchave do registo:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics
-
Defina o valor da entrada de registo DisableHWAcceleration como 1.
Nota Se a entrada de registo DisableHWAcceleration não existir, clique com o botão direito do rato na subchave do registo, aponte para Novo e, em seguida, clique em Valor da Cadeia para criar uma nova entrada de registo. Escreva DisableHWAcceleration para o nome da nova entrada de registo, faça duplo clique em DisableHWAcceleration e, em seguida, altere os dados do valor DisableHWAcceleration para 1. -
Saia do Editor de Registo.
-
Mais Informações
Para obter mais informações sobre o pipeline de composição de software, visite o seguinte site da Microsoft Developer Network (MSDN):Informações gerais sobre o pipeline de composição de software Para obter mais informações sobre as definições de registo da composição WPF, visite o seguinte site da MSDN:Informações gerais sobre as definições de registo da composição WPFPara obter mais informações sobre a enumeração System.Windows.Interop.RenderMode, visite o seguinte site da MSDN:Informações gerais sobre a enumeração "System.Windows.Interop.RenderMode"