Síntomas
Imagine la siguiente situación:
-
Ejecuta una aplicación de Windows Presentation Foundation (WPF) basada en Microsoft .NET Framework 3.5 Service Pack 1 (SP1).
-
La aplicación WPF usa la canalización de representación de hardware.
-
La aplicación carga y descarga muchos dominios de aplicación que contienen uno o más componentes de complemento WPF personalizados.
En este escenario, la aplicación encuentra una excepción System.Runtime.InteropServices.COMException y, a continuación, la aplicación se bloquea.
Solución
Información de revisiones
Microsoft dispone de una revisión compatible. Sin embargo, esta revisión está pensada para corregir solo el problema que se describe en este artículo. Aplique esta revisión solo a los sistemas que experimentan este problema específico. Esta revisión podría recibir pruebas adicionales. Por lo tanto, si no se ve gravemente afectado por este problema, le recomendamos que espere a la siguiente actualización de software que contiene esta revisión. Para descargar esta revisión desde la Galería de código de MSDN, visite el siguiente sitio web de Microsoft:
http://code.msdn.microsoft.com/KB2276690Nota La Galería de código de MSDN muestra los idiomas para los que está disponible la revisión. Si no ve su idioma en la lista, es porque la página de recursos de la Galería de códigos no está disponible para ese idioma. Nota Si se producen problemas adicionales o si es necesario solucionarlos, es posible que deba crear una solicitud de servicio independiente. Los costos de soporte técnico habituales se aplicarán a preguntas y problemas de soporte técnico adicionales que no reúnan los requisitos para esta revisión específica. Para obtener una lista completa de los números de teléfono de atención al cliente y soporte técnico de Microsoft o para crear una solicitud de servicio independiente, visita el siguiente sitio web de Microsoft:
http://support.microsoft.com/contactus/?ws=support
Requisitos previos
Para aplicar esta revisión, debes tener instalado .NET Framework 3.5 Service Pack 1 (SP1).
Requisito de reinicio
No tiene que reiniciar el equipo después de aplicar esta revisión.
Información de la sustitución de revisión
Esta revisión no reemplaza a ninguna otra revisión.
Información de archivo
La versión en inglés de esta revisión tiene los atributos de archivo (o atributos de archivo posteriores) que se enumeran en la tabla siguiente. Las fechas y horas de estos archivos se expresan de acuerdo con la hora universal coordinada (UTC). Cuando vea la información del archivo, esta se convertirá a la hora local. Para conocer la diferencia entre la hora UTC y la hora local, use la pestaña Zona horaria del elemento Fecha y hora del Panel de control.
Para todas las versiones compatibles basadas en x86 de Windows Server 2003 y Windows XP
|
Nombre de archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
02-Sep-2010 |
01:32 |
x86 |
|
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
02-Sep-2010 |
01:28 |
x86 |
|
Presentationhost.exe |
4.0.40305.0 |
295,264 |
02-Sep-2010 |
01:28 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
02-Sep-2010 |
01:32 |
x86 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
02-Sep-2010 |
01:32 |
x86 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
02-Sep-2010 |
01:32 |
x86 |
Para todas las versiones compatibles basadas en x64 de Windows Server 2003 y Windows XP
|
Nombre de archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
02-Sep-2010 |
00:53 |
x64 |
|
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
02-Sep-2010 |
00:48 |
x64 |
|
Presentationhost.exe |
4.0.31106.0 |
320,352 |
02-Sep-2010 |
00:48 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
02-Sep-2010 |
00:53 |
x64 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
02-Sep-2010 |
00:53 |
x64 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
02-Sep-2010 |
00:53 |
x64 |
Para todas las versiones compatibles basadas en x86 de Windows Vista Service Pack 2 (SP2) y de Windows Server 2008 Service Pack 2 (SP2)
|
Nombre de archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
4,218,880 |
09-Sep-2010 |
10:52 |
x86 |
|
Presentationfontcache.exe.config |
No aplicable |
161 |
03-abr-2009 |
2,125 |
No aplicable |
|
Wpfgfx_v0300.dll |
3.0.6920.4003 |
1,736,024 |
17-jun-2009 |
03:08 |
x86 |
|
Presentationframework.dll |
3.0.6920.4033 |
5,279,744 |
09-Sep-2010 |
10:52 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
130,408 |
09-Sep-2010 |
10:52 |
x86 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,249,280 |
09-Sep-2010 |
10:52 |
x86 |
Para todas las versiones compatibles basadas en x64 de Windows Vista SP2 y Windows Server 2008 SP2
|
Nombre de archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.4033 |
3,997,696 |
09-Sep-2010 |
10:52 |
x64 |
|
Presentationfontcache.exe.config |
No aplicable |
161 |
03-abr-2009 |
20:58 |
No aplicable |
|
Wpfgfx_v0300.dll |
3.0.6920.4003 |
2,254,168 |
17-jun-2009 |
03:08 |
x64 |
|
Presentationframework.dll |
3.0.6920.4033 |
4,636,672 |
09-Sep-2010 |
10:52 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.4033 |
171,368 |
09-Sep-2010 |
10:52 |
x64 |
|
Windowsbase.dll |
3.0.6920.4033 |
1,110,016 |
09-Sep-2010 |
10:52 |
x64 |
Para todas las versiones compatibles basadas en x86 de Windows 7
|
Nombre de archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.5012 |
4,218,880 |
11-Sep-2010 |
01:29 |
x86 |
|
Presentationfontcache.exe.config |
No aplicable |
161 |
10-jun-2009 |
21:14 |
No aplicable |
|
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-Sep-2010 |
01:29 |
x86 |
|
Presentationhostdll.dll |
3.0.6920.5012 |
130,408 |
11-Sep-2010 |
01:29 |
x86 |
|
Presentationhost.exe |
4.0.31106.0 |
295,264 |
11-Sep-2010 |
01:29 |
x86 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
99,176 |
11-Sep-2010 |
01:29 |
x86 |
|
Windowsbase.dll |
3.0.6920.5012 |
1,253,376 |
11-Sep-2010 |
01:29 |
x86 |
Para todas las versiones compatibles basadas en x64 de Windows 7 y Windows Server 2008 R2
|
Nombre de archivo |
Versión del archivo |
Tamaño de archivo |
Fecha |
Time |
Platform |
|---|---|---|---|---|---|
|
Presentationcore.dll |
3.0.6920.5012 |
3,997,696 |
11-Sep-2010 |
01:28 |
x64 |
|
Presentationfontcache.exe.config |
No aplicable |
161 |
10-jun-2009 |
20:30 |
No aplicable |
|
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-Sep-2010 |
01:28 |
x64 |
|
Presentationhostdll.dll |
3.0.6920.5012 |
171,368 |
11-Sep-2010 |
01:28 |
x64 |
|
Presentationhost.exe |
4.0.31106.0 |
320,352 |
11-Sep-2010 |
01:28 |
x64 |
|
Presentationhostproxy.dll |
4.0.31106.0 |
109,928 |
11-Sep-2010 |
01:28 |
x64 |
|
Windowsbase.dll |
3.0.6920.5012 |
1,114,112 |
11-Sep-2010 |
01:28 |
x64 |
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados en la sección "Se aplica a".
Solución alternativa
Para solucionar este problema, deshabilite la canalización de representación de hardware y, a continuación, habilite la canalización de representación de software. Para deshabilitar la canalización de representación de hardware y habilitar la canalización de representación de software, use uno de los métodos siguientes:
-
Establezca la enumeración System.Windows.Interop.RenderMode.El siguiente es código de ejemplo que establece la enumeración System.Windows.Interop.RenderMode para habilitar la canalización de representación de software cuando se carga una ventana WPF:
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;}
-
Establezca la clave del Registro DisableHWAcceleration .Importante Esta sección, método o tarea contiene pasos que le indican cómo modificar el Registro. Sin embargo, se pueden producir problemas graves si modifica el Registro incorrectamente. Por tanto, asegúrese de que sigue estos pasos cuidadosamente. Para mayor protección, realice una copia de seguridad del Registro antes de modificarlo. De esta manera podrá restaurar el Registro en caso de que se produzca un problema. Para obtener más información sobre cómo realizar una copia de seguridad y restaurar el Registro, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
322756 Cómo realizar una copia de seguridad y restaurar el Registro en WindowsAdvertencia Este método deshabilita la canalización de representación de hardware para todas las aplicaciones WPF en el equipo. Por lo tanto, el método no se recomienda normalmente excepto cuando los clientes controlan los entornos y no les importa el efecto para todas las aplicaciones WPFWPF.
-
Haga clic en Inicio, haga clic en Ejecutar, escriba regedit y, a continuación, presione ENTRAR.
-
Busque la siguiente subclave del Registro y haga clic en ella:
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics
-
Establezca el valor de la entrada del Registro DisableHWAcceleration en 1.Nota Si la entrada del Registro DisableHWAcceleration no existe, haga clic con el botón secundario en la subclave del Registro, seleccione Nuevo y, a continuación, haga clic en Valor de cadena para crear una nueva entrada del Registro. Escriba DisableHWAcceleration para el nombre de la nueva entrada del Registro, haga doble clic en DisableHWAcceleration y cambie los datos del valor DisableHWAcceleration a 1.
-
Cierre el Editor del Registro.
-
Más información
Para obtener más información sobre la canalización de representación de software, visite el siguiente sitio web de Microsoft Developer Network (MSDN):Información general sobre la canalizaciónde representación de software Para obtener más información sobre la configuración del Registro de wpf representación, visite el siguiente sitio web de MSDN:Información general sobre la configuración del Registro de wpf representaciónPara obtener más información sobre la enumeración System.Windows.Interop.RenderMode, visite el siguiente sitio web de MSDN:Información general sobre la enumeración "System.Windows.Interop.RenderMode"