2013-04-14 2 views
2
AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 
Forms.Application.ThreadException += 
    new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 

était le code que j'ai retiré d'une question similaire, mais il ne parvient pas à résoudre mon cas. Ce que j'essaie de faire est d'attraper un accident et de disposer de mon application correctement pour ne pas laisser derrière la mémoire dumps/traces/icônes systrayIntercepter l'exception et gérer correctement le programme quand il se bloque

+1

Quelle exception n'est pas interceptée par 'AppDomain Exception handler'? Pouvez-vous montrer du code? –

+0

C'est quand je le ferme dans le débogueur de Visual Studio, il va laisser des icônes systray et d'autres éléments non disposés que je suis sûr que ne peut pas être récupéré plus tard ... Comment le forcer à fermer correctement, je Je crains que cela n'arrive d'une autre cause et peut causer des problèmes à l'utilisateur puisque ce n'est plus dans le débogueur. – pl0xtic

+1

"C'est quand je le ferme dans le débogueur Visual Studio" est-ce une exception ou non? Si vous arrêtez simplement de déboguer un processus, bien sûr que le nettoyage ne sera pas exécuté car vous abandonnez le processus. –

Répondre

0

Si vous terminez le processus en utilisant le débogueur ou le gestionnaire de tâches, il n'y a aucun moyen pour gérer cette situation - que ce soit une application .NET ou un natif.

La gestion des exceptions d'OS dans CLR est peut-être possible, mais cela n'est pas conseillé. Voir Is it possible to catch an access violation exception in .NET? pour plus de détails.

Dans presque tous les cas, votre processus ne doit pas être interrompu de cette manière, et même si c'est le cas, une élimination correcte est inutile car OS ferme correctement toutes les poignées: fichiers, connexions, etc. est un bug de 20 ans dans Explorer et vous ne pouvez rien y faire. Espérons juste que Microsoft le réglera un jour.

Questions connexes