2011-07-29 4 views
1

Nous avons une application Windows .NET développée avec Visual Studio 2010. Cette application est construite avec le framework cible de .NET Framework 2.0. Nous expédions l'application avec .NET 3.5 SP1 comme plate-forme de travail (prérequis). En général, cette application fonctionne très bien avec la plupart de nos clients. Mais l'un d'entre eux a un problème en ce moment. L'application rencontre une erreur fatale de temps en temps (par intermittence) et est forcée de s'arrêter sans émettre de messages d'erreur, sauf "App a rencontré un problème et doit fermer." Nous sommes désolés pour le désagrément. ". Les seules informations que nous pouvons obtenir proviennent de l'observateur d'événements Windows. Les détails de l'erreur sont les suivantes:Erreur clr20r3 .NET Application Windows Visual Studio 2010

Source: .NET Runtime 2.0 Erreur
EventType: clr20r3,
P1: App.exe
P2: 6.0.0.0
P3: 4dee1ecd
P4: system.windows .forms
P5: 2.0.0.0
P6: 4889dee7
P7: 16cf
P8: 159
P9: system.componentmodel.win32
P10: NIL

Lorsque l'application se bloque, l'utilisateur effectuait différentes opérations. Nous avons mis en place une machine virtuelle avec Windows XP Professionnel, qui est le système d'exploitation utilisé par notre client. Tout fonctionnait parfaitement bien dans l'environnement de test. Nous ne sommes jamais capables de reproduire ce problème.

Un corps a-t-il des idées ou des pensées?

Tous les commentaires sont très appréciés.

+0

Vous devez améliorer la gestion des exceptions non gérées. Ecrivez un gestionnaire d'événements pour l'événement AppDomain.CurrentDomain.UnhandledException et affichez ou consignez la valeur de e.ExceptionObject.ToString(). –

+0

duplication possible de [déchiffrer les paramètres d'exception .NET clr20r3 P1..P10] (http://stackoverflow.com/questions/4052770/deciphering-the-net-clr20r3-exception-parameters-p1-p10) –

Répondre

2

J'ai vu cette erreur (ou au moins une semblable, il y a quelque temps) apparaître dans le journal des événements lorsqu'une application de formulaires Windows rencontre une erreur non gérée ouside de la pompe de message - vous devez vérifier pour vous assurer que votre mode Main et toutes les discussions de fond ont try-catch blocs, (ou vous gérer l'événement UnhandledException):

[STAThread] 
static void Main() 
{ 
    try 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(new Form1()); 
    } 
    catch (Exception ex) 
    { 
     // Log me 
    } 
} 

Notez que dans l'exemple affiché le bloc catch ci-dessus ne serait pas normalement utilisé comme ces méthodes n » t habituellement jeter des exceptions, cependant si vous avez changé votre UnhandledExceptionMode ou faire quoi que ce soit qui pourrait jeter une exception en dehors de votre message pompe alors ce m vous donner le comportement que vous voyez. Ne comptez pas sur le journal des fenêtres.

2

au lieu de corriger le bug vous-même; vous pouvez faire est de gérer toutes les exceptions lancées par votre application, connectez-vous, puis redémarrez votre application:
donc à votre principal:

AppDomain.CurrentDomain.UnhandledException += OnCurrentDomain_UnhandledException; 

//Add these too if you are in windows forms application 
Application.ThreadException += OnApplication_ThreadException; 
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); 

Ensuite, si exception jeté Consigner, et vous pouvez également redémarrer votre application

private static void OnCurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) 
{ 
#if DEBUG 
    System.Diagnostics.Debugger.Break();//we will break here if we are in debug mode. 
#endif//DEBUG 

    LogException(e);//maybe send email to you also. 
    RestartTheApplication();  
} 
Questions connexes