3

Windowイベントハンドラーをウィンドウのイベントにフックする、プレーンで空の単純な WPF アプリActivated:

public partial class MainWindow
{
    public MainWindow()
    {
        InitializeComponent();
        Activated += OnWindowActivated;
    }

    private void OnWindowActivated(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }
}

ハンドラーで例外がスローされ、他の場所で処理されない場合、アプリが停止することを期待していましたが、そうではありません。WPF はどこかで例外を飲み込んでいるようで、ウィンドウがポップアップして正常に実行され続けます。

なんで?

4

1 に答える 1

2

これは、64 ビット オペレーティング システムで 32 ビット アプリケーションを実行することに関連する問題である可能性があります。その場合は、Paul Bettsによるブログ投稿で、何が起こっているのかがよくわかるはずです。

要するに、32 ビット プロセスの場合、.NET フレームワークは、ユーザー モードとカーネル モードの境界を越えた例外の伝播に関する問題により、例外を食い尽くすように見えます。64 ビット プロセスの場合、これは発生しないため、これが実際に問題であるかどうかをテストする最も簡単な方法は、「Any CPU」プラットフォーム用にテスト アプリを再構築し、再度実行することです。私がそれをしたとき、それは予想通りにクラッシュしました。

于 2012-09-11T02:21:54.027 に答える