0

Application.ThreadException以前にandを使用したことがありAppDomain.CurrentDomain.UnhandledExceptionますが、通常、これは単一のフォームにのみ使用します。したがって、通常は in を使用MainProgram.csます。

try {
    AppDomain.CurrentDomain.UnhandledException += (sender, e) => .Handle(sender, (Exception)e.ExceptionObject);
    Application.ThreadException += (sender, e) => ExceptionHandler.Handle(sender, e.Exception);
    Application.Run(ApplicationBase);
} catch (Exception ex) {
    MessageBox.Show("Handled Exception");
}

しかし、私の新しい状況では、他のフォームが継承する単一の基本フォームを持つ現在のプロジェクト用のフォームが多数あります。

私がやろうとしているのは、ベースフォームからコード内の派生フォームでスローされた例外を処理することです.上記のコードをベースのコンストラクターに突っ込みました.イベントをヒットします。

コンストラクターと代替手段でこれを行うことができない理由は何ですか?

注:以前の質問を削除するVb.net代わりにC#、以前にこれを質問し、コードをリファクタリングして、C#回答が得られるようにしました。

4

1 に答える 1

1

これらのイベントはグローバル イベントです。個々のフォームとは何の関係もありません。

現在のコードを保持することができMain()、複数のフォームで問題なく動作します。(複数の UI スレッドがある場合を除く)

于 2012-12-11T16:10:29.117 に答える