2

このトピックについて、ここで多くのスレッドを調べましたが、成功しませんでした。私たちの WPF アプリケーションの App.xaml.cs では、DispatcherUnhandledExceptions と AppDomain.CurrentDomain.UnhandledException の処理がすべてをキャッチしていないようです。

この特定の例では、7 つのプリズム モジュールがあります。私の例外処理コードは以下のとおりです (UnhandledException とほぼ同じです):

private void OnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
    {
        try
        {
            var ex = e.Exception.InnerException ?? e.Exception;
            var logManager = new LogManager();
            logManager.Error(ex);


            if (!EventLog.SourceExists(ex.Source))
                EventLog.CreateEventSource(ex.Source, "AppName");
            EventLog.WriteEntry(ex.Source, ex.InnerException.ToString());

            var emb = new ExceptionMessageBox(ex);
            emb.ShowDialog();
            e.Handled = true;

        }
        catch (Exception)
        { }
    }

問題は、モジュールで発生する未処理の例外のようです。 これらは上記のコードではキャッチされず、アプリケーションがクラッシュし、ログに記録したりメッセージを表示したりすることはありません。

誰もこれを経験していますか?

4

2 に答える 2

2

これは、Prismアプリで例外をキャッチするために行ったことです(ほとんどすべてをキャッチします)。

static class Program
{
    [STAThread]
    static void Main()
    {
        try
        {
             App app = new App();
             app.InitializeComponent();
             app.Run();
        }
        catch (Exception e)
        {
             // Log here
             // Custom error message.
        }
     }
 }

これを機能させるには、「スタートアップオブジェクト」をこのクラスに変更する必要があります。これは、シェルのプロジェクトプロパティで行うことができます。

于 2012-11-01T05:49:35.367 に答える