次の方法で共有


セカンダリ ワーカー スレッド上の未処理の例外の管理のサンプル

更新 : 2007 年 11 月

このサンプルでは、セカンダリ ワーカー スレッドにスローされた未処理の例外を管理する方法を示します。

このサンプルでは、Windows Presentation Foundation の特定の機能を示します。そのため、アプリケーション開発のベスト プラクティスに従っていません。Windows Presentation Foundation (WPF) と Microsoft .NET Framework のアプリケーション開発ベスト プラクティスの包括的な説明については、適宜、次のトピックを参照してください。

ユーザー補助 - 「ユーザー補助のベスト プラクティス

ローカリゼーション - 「WPF のグローバリゼーションおよびローカリゼーションの概要

パフォーマンス - 「WPF アプリケーションのパフォーマンスの最適化

セキュリティ - 「Windows Presentation Foundation のセキュリティ

Download sample

サンプルのビルド

  • 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 オブジェクトがこれを検出します。

Bb625944.alert_note(ja-jp,VS.90).gifメモ :

セカンダリ ワーカー スレッドは、UI を表示しないセカンダリ スレッドです。

参照

処理手順

セカンダリ UI スレッド上の未処理の例外の管理のサンプル

概念

スレッド モデル