Esto se relaciona con un previous question.¿Por qué las excepciones de AppDomain invariablemente terminan la aplicación?
Lo que estoy tratando de entender ahora es cómo se puede evitar que las excepciones de subprocesos de UI terminen la aplicación, mientras que las excepciones que no son de UI no se pueden.
Para referencia, vea this example.
Lo que es más importante, lo que me gustaría poder hacer en ese caso es terminar "silenciosamente" el proceso, sin mostrar el cuadro de diálogo de Windows que pregunta si me gustaría enviar un informe de error o no.
Esta es mi dominio de aplicación UnhandledExceptionHandler:
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
try
{
// Maybe do some logging here if allowed
}
catch
{
}
// then just terminate the application
Application.Exit();
}
ACTUALIZACIÓN
A la luz de los comentarios en this answer, me gustaría dejar claro que lo más importante que me gustaría obtener más información sobre el mecanismo que permite que el subproceso de interfaz de usuario tenga una oportunidad temprana de detectar excepciones no controladas a través del mecanismo Application.ThreadException
. Y si tal comportamiento podría implementarse en un hilo que no sea UI.
@Reed: "Las excepciones no controladas en el hilo de interfaz de usuario hará que la misma cosa que sucederá ". - esto no es verdad. Por favor crea una aplicación de prueba y pruébalo por ti mismo. –
Técnicamente, debería haber dicho "excepciones no controladas en el hilo principal". Windows Forms agrega su propio comportamiento de manejo de excepciones en el hilo de la interfaz de usuario (ya que se ejecuta completamente en el hilo de la interfaz de usuario) que cambia el comportamiento del hilo principal. Cree una aplicación de consola e intente esto, y verá que no importa en qué subproceso ocurran las cosas: todos eliminarán la aplicación. –
Entonces debería replantear mi pregunta: ¿Cómo cumple el hilo de la interfaz de usuario su comportamiento de manejo de excepciones generales? ¿Es eso algo que podría replicar como comportamiento para un hilo que no sea UI? –