¿Qué podría hacer que una aplicación .NET WinForms se cierre repentinamente sin un diálogo?

StackOverflow https://stackoverflow.com/questions/201614

  •  03-07-2019
  •  | 
  •  

Pregunta

Se ha informado que nuestra aplicación WinForms ocasionalmente se cierra por sí sola. No muestra nuestro propio cuadro de diálogo de error de bloqueo ni el cuadro de diálogo de error de Windows, simplemente se cierra y desaparece, a menudo cuando la persona estaba nerviosa y no hace nada con la aplicación. Parece ser un acontecimiento semi-raro, tal vez como 2-3 veces al mes, y le ha ocurrido a más de una persona. No tengo idea de por dónde empezar con un caso de reproducción o dónde comenzar a rastrear esto.

C # .NET 2.0 Los casos reportados están en Win XP

¿Alguien tiene alguna idea?

¿Fue útil?

Solución

Los desbordamientos de pila debido a la recursión infinita son una causa importante de que las aplicaciones se cierren sin previo aviso. A menos que haya hecho algo deliberadamente para provocar una salida silenciosa, las excepciones no manejadas (que no sean el desbordamiento de pila) normalmente mostrarán algún tipo de IU antes de que la aplicación se cierre. El desbordamiento de pila es la excepción más común (oops, lo siento) a esta regla.

Por supuesto, desde un código no administrado o inseguro es casi seguro alterar el tiempo de ejecución de la manera correcta para provocar una salida silenciosa.

Las sugerencias sobre instrumentación y mirar el registro de eventos de Windows también son buenas.

Otros consejos

Las excepciones harán que una aplicación desaparezca " " ;. Compruebe los registros de eventos para ver si había algo allí.

Verifique el administrador de tareas para ver si el proceso todavía está presente cuando la ventana desaparece. Tuve un error en el explorador y no pude volver a dibujar la ventana hasta que fue Alt-Tabbed o Switched-To (desde el administrador de tareas).

No pase a los usuarios para olvidar que están cerrando la aplicación. Es posible que desee poner algo de lógica de registro en la aplicación para registrar los cierres iniciados por el usuario. La próxima vez que " desaparece " puede comprobar si hay entradas de registro.

Puede agregar algo de lógica en el evento FormClosing para preguntar al usuario si eso es lo que realmente quiere hacer, luego puede cancelar el evento de cierre y su aplicación continuará ejecutándose si todo está bien. Si sigue notando este problema y nunca realiza su lógica, tendrá que ensuciarse las manos en el depurador.

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