非同期プログラミングのデザイン パターン
更新 : 2007 年 11 月
通常、非同期操作は、大きなサイズのファイルを開く、リモート コンピュータに接続する、データベースに問い合わせるなど、完了するまでに時間のかかる可能性があるタスクを実行するために使用します。非同期操作は、メイン アプリケーション スレッドとは別個のスレッドで実行されます。アプリケーションが非同期操作を実行するメソッドを呼び出した場合、アプリケーションは、非同期メソッドがタスクを実行している間も動作を継続できます。
.NET Framework には、非同期操作のデザイン パターンとして次の 2 つが用意されています。
IAsyncResult オブジェクトを使用する非同期操作
イベントを使用する非同期操作
IAsyncResult デザイン パターンでは、さまざまなプログラミング モデルを使用できますが、習得するのに手間がかかり、ほとんどのアプリケーションで必要とされる以上の柔軟性を提供します。クラス ライブラリをデザインするときには、可能であれば、イベント ドリブン モデルを使用して非同期メソッドを実装することをお勧めします。場合によっては、IAsyncResult ベース モデルを実装する必要がある場合もあります。
イベントを使用する非同期操作については、「イベントベースの非同期パターンの概要」を参照してください。
非同期プログラミングの機能は、次を始めとする .NET Framework のさまざまな機能によってサポートされます。
ファイル IO、ストリーム IO、ソケット IO
ネットワーク
リモート チャネル (HTTP、TCP) およびプロキシ
ASP.NET を使用して作成された XML Web サービス
ASP.NET Web フォーム
MessageQueue クラスを使用したメッセージ キュー
このセクションの内容
非同期プログラミングの概要
IAsyncResult ベースの非同期デザイン パターンについて説明します。このデザイン パターンは、非同期操作を処理するための柔軟なプログラミング モデルを提供します。IAsyncResult を使用した非同期メソッドの呼び出し
アプリケーションが非同期操作の末尾を検出するためのさまざまな方法を示すコード例を紹介します。デリゲートを使用した非同期プログラミング
非同期的な方法による同期メソッドの呼び出しについて説明します。イベント ベースの非同期パターンを使用したマルチスレッド プログラミング
イベント ベースの非同期パターンについて説明します。このデザイン パターンは、スレッド間の通信にイベントを使用する非同期プログラミング モデルを提供します。