2008-10-14 4 views
3

Il a été signalé que notre application WinForms se fermait parfois seule. Il ne montre ni notre propre boîte de dialogue d'envoi d'erreur d'erreur ni la boîte de dialogue d'envoi d'erreur de Windows, elle se ferme et disparaît, souvent lorsque la personne était afk et ne faisait rien avec l'application. Cela semble être un événement semi-rare, peut-être deux ou trois fois par mois, et c'est arrivé à plus d'une personne. Je n'ai aucune idée par où commencer avec un cas de repro ou où commencer à suivre cela.Qu'est-ce qui peut provoquer la fermeture soudaine d'une application .NET WinForms sans dialogue?

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

Quelqu'un a des idées?

Répondre

4

Les dépassements de pile dus à une récursion infinie sont une grande cause de l'arrêt des applications sans avertissement. À moins que vous ayez fait quelque chose de délibéré pour provoquer une sortie silencieuse, les exceptions non gérées (autres que le débordement de pile) afficheront normalement une sorte d'interface utilisateur avant que l'application ne se ferme. Le dépassement de pile est l'exception la plus courante (oups, désolé) à cette règle.

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

Les suggestions sur l'instrumentation et sur le journal des événements Windows sont également bonnes.

+0

On dirait qu'il est fort probable qu'un crash silencieux soit le coupable. Merci – Davy8

3

Les exceptions entraîneront la disparition d'une application. 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 l'accident de l'explorateur et ne parvenez pas à redessiner la fenêtre jusqu'à ce qu'il soit Alt-Tabbed ou Switched-To (à partir du gestionnaire de tâches). Ne pas mettre au-delà des utilisateurs pour oublier facilement qu'ils ferment l'application. Vous souhaiterez peut-être mettre une logique de journalisation dans l'application pour consigner les fermetures initiées par l'utilisateur. La prochaine fois qu'il "disparaît", vous pouvez vérifier toutes les entrées du journal.

+0

L'application n'est pas dans le "sauvage" mais je connais assez bien ces utilisateurs pour ne pas fermer l'application eux-mêmes (cela arrive un peu trop souvent pour un oubli commode) – Davy8

+0

Aussi l'application doesn ' t créer une nouvelle instance s'il y a déjà un autre processus, et ils ont pu rouvrir l'application, donc il s'est effectivement écrasé silencieusement, mais en général ce sont de bonnes choses à vérifier. – Davy8

0

Vous pourriez ajouter une certaine logique dans l'événement FormClosing pour demander à l'utilisateur si c'est ce qu'il veut vraiment faire, vous pouvez ensuite annuler l'événement de fermeture et votre application continuera à fonctionner si tout va bien. Si vous continuez à remarquer ce problème et qu'il n'effectue jamais votre logique, vous devrez vous salir les mains dans le débogueur.

Questions connexes