Qu'est-ce qui pourrait provoquer la fermeture soudaine d'une application .NET WinForms sans dialogue?

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

  •  03-07-2019
  •  | 
  •  

Question

Il a été signalé que notre application WinForms se ferme parfois d'elle-même. Il ne montre ni notre propre boîte de dialogue de soumission d'erreur d'erreur ni celle de Windows, il se ferme et disparaît, souvent lorsque la personne était afk et ne faisait rien avec l'application. Cela semble être un événement presque rare, peut-être 2 à 3 fois par mois, et c'est arrivé à plus d'une personne. Je ne sais pas par où commencer pour obtenir un cas de repro ou par où commencer à le retrouver.

C # .NET 2.0 Les cas signalés sont sous Win XP

Quelqu'un a des idées?

Était-ce utile?

La solution

Les débordements de pile dus à une récursion infinie sont une cause importante du fait que les applications se ferment sans avertissement. À moins que vous n'ayez agi délibérément pour provoquer une sortie en mode silencieux, les exceptions non gérées (autres que le dépassement de capacité de la pile) afficheront normalement une sorte d'interface utilisateur avant la fermeture de l'application. Le débordement de pile est l'exception la plus courante (oups, désolé) de cette règle.

Bien sûr, à partir de code non géré ou non sécurisé, il est presque certainement possible de perturber le temps d'exécution de la bonne manière afin de provoquer une sortie silencieuse.

Les suggestions concernant l'instrumentation et la consultation du journal des événements Windows sont également valables.

Autres conseils

Les exceptions feront qu'une application "disparaît". Vérifiez les journaux des événements pour voir si quelque chose était là.

Vérifiez le gestionnaire de tâches pour voir si le processus est toujours présent lorsque la fenêtre disparaît. J'ai eu un plantage de l'explorateur et je ne parviens pas à redessiner la fenêtre tant qu'il n'y avait pas Alt-Tabbed ou Switched-To (du gestionnaire de tâches).

N'inscrivez pas les utilisateurs pour qu'ils oublient qu'ils ferment l'application. Vous voudrez peut-être mettre une logique de journalisation dans l'application pour journaliser les fermetures initiées par l'utilisateur. La prochaine fois, il "disparaît". vous pouvez rechercher des entrées de journal.

Vous pouvez ajouter une certaine logique à l’événement FormClosing pour demander à l’utilisateur si c’est ce qu’ils veulent vraiment, vous pouvez ensuite annuler l’événement de clôture et votre application continuera de s’exécuter si tout va bien. Si vous continuez à remarquer ce problème et que votre logique n’exécute jamais, vous devrez vous salir les mains dans le débogueur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top