Pregunta

Quiero conseguir por defecto de Windows Forms no controlada-Excepción cuadro de diálogo siempre mis encuentros C # aplicación U-E. En 2005 vs cuando apago de depuración JIT en app.conf como esto:

<configuration>
   <system.windows.forms jitDebugging="false" />
<configuration>

se comporta la aplicación correcta y espectáculos Windows Forms diálogo predeterminado T-E, con Continuar, Salir, pila de llamadas y todo.

Sin embargo, en contra de 2008, en la misma máquina o diferentes, a pesar de que JIT diable sigo teniendo defecto .NET no controlada-Excepción de diálogo, la depuración, envíe botones de Informe y no envían.

¿Cómo puedo hacer que mi aplicación vs 2.008 acto como el que hago en VS 2005, para mostrar Windows Forms cuadro de diálogo U-E?

Por favor, no recomendamos el uso

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

sólo porque yo no uso controlador personalizado en mi proyecto vs 2005, ¿por qué debería utilizar en VS 2008? Quiero que este trabajo hacer CLR.

Cualquier ayuda se agradece

¿Fue útil?

Solución

Usted está hablando de diferentes características de manejo de excepciones. El ThreadExceptionDialog que se ve a Salir y continuar botones se activa por el evento href="http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx" Application.ThreadException . Es solamente siempre aparecerá si la excepción ocurre en el hilo de interfaz de usuario, cuando un controlador de eventos que se ejecuta en respuesta a un mensaje de Windows se produce una excepción. Cualquier excepción en un subproceso de trabajo embargo bombardeará el programa a través AppDomain.UnhandledException.

Usted no puede manejar este último, el programa está muerto y no puede continuar. Mostrando ThreadExceptionDialog no tiene sentido.

Se puede hacer que el programa de la bomba constantemente mediante la desactivación del evento ThreadException llamando Application.SetUnhandledExceptionMode (). Ahora, cada excepción no controlada se disparará AppDomain.UnhandledException y terminar el programa. Esto probablemente no es lo que quiere, pero es la sabia elección.

Tenga en cuenta también que el evento ThreadException se desactiva cuando se ejecuta el programa con un depurador. Lo cual es, presumiblemente, por la que ves una diferencia en VS2008. Hay otra manera no se han producido cambios.

Otros consejos

por Hans Passant parece sensato. Sin embargo, a pesar de que dice que no quiere todavía recomiendo un controlador de AppDomain.CurrentDomain.UnhandledException para asegurarse de que determinar lo que ocurre cuando la aplicación se bloquea inesperadamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top