Question

Dans mon application C #, même exception poignée I:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
AppDomain.CurrentDomain.UnhandledException +=
    new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);

puis dans le gestionnaire montrant boîte de dialogue et de faire Application.Exit obtenir encore les fenêtres de dialogue de rapport d'erreurs avec Envoyer, Do not Envoyer ...

Comment éviter de dialogue de rapports d'erreurs de fenêtres de sauter vers le haut?


En fait, si l'exception est levée à partir constructeur du formulaire principal, puis le programme se termine avec une erreur Windows affiche DLG. Sinon, si d'un autre emplacement de fil interface utilisateur, puis comme prévu.

Était-ce utile?

La solution

Vous aurez besoin de mettre fin à l'application vous. Cela fera:

static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) {
  var ex = e.ExceptionObject as Exception;
  MessageBox.Show(ex.ToString());
  if (!System.Diagnostics.Debugger.IsAttached)
    Environment.Exit(System.Runtime.InteropServices.Marshal.GetHRForException(ex));
}

Autres conseils

La boîte de dialogue qui présente le choix d'envoyer ou non envoyer un rapport d'erreur à Microsoft est au-delà des exceptions. Cela peut se produire si vous utilisez des blocs dangereux {} ou que vous utilisez p / Invoke de qui effectuent une opération illégale.

Je pense que vous ne devriez pas lutter contre les symptômes de votre problème. Les exceptions non gérées ne devraient pas se produire en premier lieu.

Avez-vous des indices sur ce qui les provoque?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top