2011-02-02 13 views
11

Al depurar una aplicación, aparece el siguiente error.CLR no ha podido realizar la transición desde el contexto COM 0x3b2d70 al contexto COM

El CLR no ha podido pasar del contexto COM 0x3b2d70 al contexto COM 0x3b2ee0 durante 60 segundos. El hilo que posee el contexto/apartamento de destino probablemente esté haciendo una espera de no bombeo o procesando una operación de muy larga ejecución sin bombear mensajes de Windows. Esta situación generalmente tiene un impacto negativo en el rendimiento e incluso puede llevar a que la aplicación no responda o el uso de la memoria se acumule continuamente a lo largo del tiempo. Para evitar este problema, todos los subprocesos de apartamento de rosca única (STA) deben usar primitivas de espera de bombeo (como CoWaitForMultipleHandles) y bombear mensajes rutinariamente durante operaciones de larga ejecución.

Por qué el sistema arroja este error.

+1

Le sugiero que agregue más detalles a su pregunta, tal vez publicando el código que ocasiona el error. –

Respuesta

13

que tiene la solución

necesidad de desmarcar ContextSwitchDeadlock debajo de Depuración> Excepciones-> Asistentes de depuración administrados.

Después de desmarcar ContextSwitchDeadlock no está arrojando el error.

+50

Sí, porque VS ** lo oculta **. ¡Esto no significa que el problema ya no existe! – Odys

+0

@odyodyodys Estoy especialmente contento de no haber ocultado la excepción porque el problema que produce la excepción hace que mi aplicación espere 60 segundos durante la pantalla de bienvenida sin motivo aparente. No puedes arreglar errores que no puedes encontrar. – erodewald

+2

Lo único peor que no saber por qué algo está ** ** funcionando no es saber por qué algo ** está ** funcionando. –

Cuestiones relacionadas