Frage

Ich möchte erhalten Standard Windows Forms Unhandle-Exception Dialog wenn meine C # Anwendung Begegnungen U-E. In vs 2005, als ich die JIT-Debuggen in app.conf wie folgt deaktivieren:

<configuration>
   <system.windows.forms jitDebugging="false" />
<configuration>

die Anwendung verhält sich korrekt und zeigt Windows Forms-U-E Standard-Dialog mit Weiter, Beenden, Call-Stack und alle.

Doch in vs 2008 auf der gleichen Maschine oder verschieden ist, obwohl ich diable jit Ich bekommt immer noch Standard .NET Unhandle-Exception Dialog mit Debug, Bericht senden und nicht senden Tasten.

Wie kann ich meine vs 2008 App handeln, wie ich sie in vs 2005 machen, um zu zeigen, Windows Forms-U-E-Dialogfeld?

Bitte nicht empfehlen

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

, nur weil ich gegen 2005-Projekt in meinem nicht benutzerdefinierte Handler verwenden, warum sollte ich in VS 2008 verwenden? Ich will diesen Job tun lassen CLR.

Jede Hilfe ist willkommen

War es hilfreich?

Lösung

Sie sprechen über verschiedene Ausnahmebehandlung Funktionen. Der ThreadExceptionDialog mit dem Beenden sehen und weiter Tasten wird ausgelöst durch die Application.ThreadException Ereignis . Es wird immer nur angezeigt, wenn die Ausnahme auf dem UI-Thread geschieht, wenn ein Event-Handler, der ausgeführt wird in Reaktion auf eine Windows-Meldung eine Ausnahme auslöst. Jede Ausnahme in einem Arbeitsthread jedoch wird bombardiert das Programm durch AppDomain.UnhandledException.

Sie können die letztere nicht umgehen, das Programm ist tot und kann nicht fortgesetzt werden. Angezeigte ThreadExceptionDialog ist sinnlos.

Sie können das Programm Bombe machen konsequent durch die Thread Ereignis Deaktivierung von Application.SetUnhandledExceptionMode () aufrufen. Jetzt kann jeder nicht behandelten Ausnahmen AppDomain.UnhandledException auslösen und das Programm beenden. Das ist wahrscheinlich nicht das, was Sie wollen, aber ist die kluge Wahl.

Beachten Sie auch, dass der Thread Ereignis wird deaktiviert, wenn Sie das Programm mit einem Debugger ausführen. Die vermutlich ist, warum Sie einen Unterschied in VS2008 zu sehen. Es gibt sonst keine Veränderungen.

Andere Tipps

Antwort von Hans Passant sinnvoll erscheint. Aber auch wenn Sie sagen, Sie wollen nicht empfehle ich immer noch ein Handler auf AppDomain.CurrentDomain.UnhandledException um sicherzustellen, dass Sie bestimmen, was passiert, wenn Ihre Anwendung unerwartet abstürzt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top