2009-10-20 3 views
9

Une de nos applications .NET 2.0 a commencé à disparaître au hasard. Il n'y a aucun enregistrement dans le journal des événements, Dr. Watson ne génère pas de vidage sur incident, pas de rien ...Comment faire pour résoudre l'application .NET qui disparaît juste?

Comment faire pour résoudre cette application?

+0

Effectuez-vous des appels p/invoke? –

+0

Pas directement. Nous utilisons Crystal Reports, qui peut faire de tels appels. Quoi qu'il en soit, l'application a fonctionné pendant un an sans problèmes. – alex

+0

Utilisez-vous des composants COM? –

Répondre

5

1) Attacher un gestionnaire d'événement à l'événement AppDomain.UnhandledException et consigner l'objet d'exception.

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 

2) Joindre un gestionnaire d'exception de fil

Application.ThreadException += 
    new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); 

Pour WPF et Silverlight vous utilisez applications plus gestionnaires d'exceptions, par exemple Application.DispatcherUnhandledException et Application.UnhandledException respectivement, mais ceux-ci ne vous intéressent pas dans ce scénario. Je les inclus pour l'exhaustivité.

+1

Il est géré - aucun enregistrement de journal. – alex

2

Modifiez le code pour inclure les étapes du journal après chaque section pertinente, puis vérifiez le fichier journal pour voir où cela se passe.

Si elle ne même pas commencer, alors ça va vous dire quelque chose de trop ...

3

Nous avons eu un problème similaire. Nous avons eu un événement pour AppDomain.UnhandledException mais il a même été ignoré. Il s'est avéré être une SystemAccessViolation provoquée lorsque nous avons testé le contenu du presse-papiers. Si elle est similaire (par exemple, si vous ignorez l'événement AppDomain.UnhandledException), je vous suggérerais de tout noter sur les appels de données interopérables et hostiles de l'extérieur de votre processus et du code. Il nous a fallu plusieurs semaines pour le dépister et un changement d'une ligne pour le réparer.

Activez également MDA dans VS et exécutez votre programme avec celui-ci et vérifiez si vous obtenez des erreurs.

Questions connexes