更新 : 2007 年 11 月
このサンプルでは、セカンダリ ワーカー スレッドにスローされた未処理の例外を管理する方法を示します。
このサンプルでは、Windows Presentation Foundation の特定の機能を示します。そのため、アプリケーション開発のベスト プラクティスに従っていません。Windows Presentation Foundation (WPF) と Microsoft .NET Framework のアプリケーション開発ベスト プラクティスの包括的な説明については、適宜、次のトピックを参照してください。
ユーザー補助 - 「ユーザー補助のベスト プラクティス」
ローカリゼーション - 「WPF のグローバリゼーションおよびローカリゼーションの概要」
パフォーマンス - 「WPF アプリケーションのパフォーマンスの最適化」
セキュリティ - 「Windows Presentation Foundation のセキュリティ」
サンプルのビルド
Windows ソフトウェア開発キット (SDK) をインストールして、そのビルド環境のコマンド ウィンドウを開きます。[スタート] メニューの [すべてのプログラム]、[Microsoft Windows SDK] の順にポイントし、[CMD シェル] をクリックします。
サンプルをハード ディスク ドライブにダウンロードします。通常は、ソフトウェア開発キット (SDK) のドキュメントからダウンロードします。
ビルド環境のコマンド ウィンドウからサンプルをビルドするには、サンプルのソース ディレクトリに移動します。コマンド プロンプトで「MSBUILD」と入力します。
Microsoft Visual Studio でサンプルをビルドするには、サンプル ソリューションかプロジェクト ファイルを読み込んで、Ctrl キーと Shift キーを押しながら B キーを押します。
サンプルの実行
コンパイルしたサンプルをビルド環境のコマンド ウィンドウから実行するには、サンプルのソース コード フォルダの下にある Bin\Debug または Bin\Release フォルダで .exe ファイルを実行します。
コンパイルしたサンプルを Visual Studio でデバッグしながら実行するには、F5 キーを押します。
解説
スタンドアロンまたはブラウザによってホストされる WPF アプリケーションでは、Application クラスを使用して、未処理の例外を検出します (「DispatcherUnhandledException」を参照)。ただし、Application が検出できるのは、Application クラスが実行されているスレッドと同じスレッドにスローされた未処理の例外だけです。通常、アプリケーションには 1 つのメイン ユーザー インターフェイス (UI) スレッドがあり、Application クラスの未処理の例外の検出動作に対応します。しかし、セカンダリ スレッドにスローされた未処理の例外は、メイン UI スレッド上の Application クラスによって自動的に検出されません。
このサンプルでは、セカンダリ ワーカー スレッドの未処理の例外を、Application オブジェクトによって検出できるメイン UI スレッドに戻す方法を示します。これは、セカンダリ ワーカー スレッド上の未処理の例外を検出し、Dispatcher を使用して、その未処理の例外をメイン UI スレッドに転送することによって行われます。メイン UI スレッド上で例外が再スローされることにより、Application オブジェクトがこれを検出します。
![]() |
---|
セカンダリ ワーカー スレッドは、UI を表示しないセカンダリ スレッドです。 |