-1

アプリケーションがクラッシュするたびにメッセージボックスが表示され、ログファイルを電子メールで送信するようにユーザーに依頼するように、WP8 アプリケーションのエラーログを作成しました。

これは、App.xaml.cs で実装した方法です。

private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
        //File Handler for Log file
        Log.write("some string here");

        MessageBoxResult result = MessageBox.Show("String", "String", MessageBoxButton.OKCancel);

        if (result == MessageBoxResult.OK) // BREAKPOINT here
        {
            EmailComposeTask emailComposeTask = new EmailComposeTask();
            emailComposeTask.Subject = "Unhandled Exception";
            emailComposeTask.Body = "Device OS Version: " + Environment.OSVersion.ToString() + "\n\n" + Log.readFile();
            emailComposeTask.To = "email@email.com";
            emailComposeTask.Show();
        }

        if (Debugger.IsAttached)
        {
            // An unhandled exception has occurred; break into the debugger
            Debugger.Break();
        }
    }

if (result == MessageBoxResult.OK)デバイスでのデバッグ中に、すべてが正常に機能し、ブレークポイントを入力した場合、または前の行にログの内容をメールに送信できましたemailComposeTask.Show();

ブレークポイントを無効にすると、MessageBox は表示されますが、emailComposeTask表示されません。

何が問題なのですか?ブレークポイントを削除したときではなく、デバッグとブレークポイント中にのみ機能します。

4

1 に答える 1

1

UnhandledException ハンドラーは、必要なことを行うのに適切な場所ではありません。通常行われているのは、ApplicationSettings に例外情報 (およびその他の有用な情報) を保存し、アプリを終了させることです。アプリの次回の起動時に、ストレージに例外が存在するかどうかを確認できます。存在する場合は、ユーザーにプロンプ​​トを表示して電子メール クライアントを開くことができます。

この小さなユーティリティは非常に便利ですhttp://blogs.msdn.com/b/andypennell/archive/2010/11/01/error-reporting-on-windows-phone-7.aspx

于 2013-11-07T06:55:03.330 に答える