Je rencontre un problème avec une application suspendue et me donne le message par défaut "Veuillez informer Microsoft de ce problème", au lieu de la boîte de dialogue "exception non gérée" dans le application.Une exception s'est produite Application.ThreadException et AppDomain.CurrentDomain.UnhandledException
Dans le code de l'application, Application.ThreadException et AppDomain.CurrentDomain.UnhandledException sont tous deux redirigés vers une méthode qui écrit un journal des erreurs sur le disque, enregistre une capture d'écran sur le disque et affiche une boîte de dialogue conviviale.
Mais lorsque cette erreur se produit, aucune de ces trois choses n'arrive. Tout ce que je reçois est ceci dans l'Observateur d'événements:
EventType clr20e3, P1 myapp.exe, P2 4.0.0.0, P3 47d794d4, P4 mscorlib, P5 2.0.0.0, P6 471ebc5b, P7 15e5, 27 P8, système P9 .argumentoutofrange, P10 NIL
Étant donné que l'erreur ne semble se produire que lorsque l'application a fonctionné pendant plusieurs heures, je me demande s'il ne s'agit pas d'un problème de fuite de mémoire. J'ai cherché un peu pour "clr20e3" mais seulement réussi à trouver des trucs ASP.Net. Mon application est Windows Forms (.Net 2.0) exe, en utilisant pas mal d'assemblys - à la fois en C# et en C++ non géré.
Je suppose que cela pourrait aussi être une erreur dans la méthode de gestion des erreurs - Comme certaines réponses le suggèrent, je peux essayer de me connecter au début du gestionnaire d'erreur (mais comme je le fais de toute façon) .
Toute aide pour résoudre ce problème serait très appréciée - que ce soit des solutions ou des suggestions pour savoir quelle est la cause première du problème. MISE À JOUR: La cause première du bogue d'origine était l'accès à un tableau avec un index négatif (c'était le system.argumentoutofrange). Pourquoi cela n'a pas été piégé est un peu un mystère pour moi, mais étant donné que les deux exceptions ont été envoyées au même code de manipulation, je me demande s'il n'y a pas eu une condition où (par exemple) les deux ont été invoqués (le fichier journal, par exemple)?
J'ai réussi à le prouver en effectuant un EventLog.WriteEntry avant toute chose dans le code de gestion des erreurs. Ayant maintenant ajouté un drapeau pour empêcher la ré-entrée dans la gestion des erreurs, je ne semble plus avoir de problème ...
Attachez-vous à ThreadException avant d'appeler Application.Run dans Main()? – Will