3 Stimmen

Debugge WPF auf dem Client-Rechner

Was ist der beste Weg, Fehler in einer WPF-Anwendung zu erfassen? Ich habe bereits Folgendes zu meiner app.xaml.cs hinzugefügt:

void App_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{

    var stringBuilder = new StringBuilder();
    stringBuilder.AppendFormat("{0}\n", e.Exception.Message);
    stringBuilder.AppendFormat(
            "Exception behandelt auf dem Haupt-UI-Thread {0}.", e.Dispatcher.Thread.ManagedThreadId);

    // Versuch, Daten zu speichern
    var result = MessageBox.Show(
                    "Anwendung muss beendet werden:\n\n" + stringBuilder.ToString() + "\n\nVor dem Beenden speichern?",
                    "app",
                    MessageBoxButton.YesNo,
                    MessageBoxImage.Error);
    if (result == MessageBoxResult.Yes)
    {
        MessageBox.Show(e.Exception.InnerException.ToString());
        MessageBox.Show(e.Exception.InnerException.Message.ToString());

    }

    // Beenden-Code zurückgeben
    this.Shutdown(-1);

    // Standardmäßige Behandlung von nicht behandelten Ausnahmen verhindern
    e.Handled = true;
}
private void Application_Startup(object sender, StartupEventArgs e)
{
    AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}

void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
    Exception ex = e.ExceptionObject as Exception;
    MessageBox.Show(ex.Message, "Unbehandelte Thread-Ausnahme", MessageBoxButton.OK, MessageBoxImage.Error);
}

Aber ich bekomme immer noch gelegentlich Situationen, in denen die App abstürzt und der Fehler nicht in einem MessageBox angezeigt wird. Wie debugge ich diese Art von Fehlern? Das Ereignisprotokoll von Windows zeigt mir keine nützlichen Informationen an. Und natürlich funktioniert die App im IDE einwandfrei, also hilft das auch nicht wirklich weiter.

0voto

Prince Ashitaka Punkte 8407

Im IDE können Sie es erwischen. Gehen Sie zu
Debug -> Ausnahmen.

Aus dem Dialogfeld aktivieren Sie das Kontrollkästchen für die Ausnahme Common Language Runtime Exception.

Jetzt können Sie es im IDE erwischen.

HTH

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X