計算を長時間実行するシングル スレッド アプリケーションのサンプル

更新 : 2007 年 11 月

このサンプルでは、操作を長時間実行するシングル スレッド アプリケーションで、UI が応答しない状態になることを避ける方法を示します。

このサンプルには、クリックされると素数の計算を開始する Button が用意されています。この計算は理論上、永久に継続するため、イベント ハンドラがループに入って素数の計算を開始すると、呼び出しは復帰せず、UI スレッドはフリーズします。

これを回避するために、サンプルでは、BeginInvoke を呼び出して UI スレッドの Dispatcher のキューに非同期ジョブを配置します。キューにプッシュされたジョブは、UI スレッドが SystemIdle 状態であれば 1 つの数字を処理し、次に UI スレッドがアイドルになると、別の呼び出しをディスパッチャにプッシュして次の数字を処理します。

これにより、常に UI スレッドが次の数字の計算よりも優先され、UI はハングしなくなります。

このサンプルの詳細については、「スレッド モデル」を参照してください。

このサンプルでは、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 キーを押します。

参照

処理手順

ディスパッチャによる天気予報サービスのシミュレーションのサンプル

Web ブラウザのマルチスレッド処理のサンプル

システム タイマによるコマンド ソースの無効化のサンプル

概念

スレッド モデル