非同期デリゲート
非同期デリゲートを使用すると、同期メソッドを非同期的に呼び出すことができます。デリゲートを同期的に呼び出すと、Invoke メソッドによって対象メソッドが現在のスレッドで直接呼び出されます。コンパイラが非同期デリゲートをサポートしている場合は、コンパイラによって Invoke メソッド、BeginInvoke メソッド、および EndInvoke メソッドが生成されます。BeginInvoke メソッドが呼び出されると、共通言語ランタイムが要求をキューに置き、その後すぐに呼び出し元に戻ります。対象メソッドは、スレッド プールのスレッドで呼び出されます。要求を送信した元のスレッドは、スレッド プールのスレッドで実行されている対象メソッドと並行して継続実行できます。BeginInvoke でコールバックが指定されている場合は、対象メソッドが戻るとコールバックが呼び出されます。コールバックでは、EndInvoke メソッドを使用して戻り値と In/Out パラメータを取得します。BeginInvoke にコールバックが指定されていない場合は、要求を送信した元のスレッドで EndInvoke を使用できます。
メモ 現在、Microsoft C# コンパイラでは、非同期デリゲートがサポートされています。
このセクションの内容
- デリゲートの使用
非同期デリゲートをプログラムで実装する方法について説明します。 - コンパイラと共通言語ラインタイム サポート
非同期メソッド シグネチャを使用して生成される BeginInvoke と EndInvoke を取り上げ、ランタイムのコンパイラ サポートについて説明します。 - コンパイラが提供するデリゲートの BeginInvoke メソッドと EndInvoke メソッド
BeginInvoke メソッドと EndInvoke メソッドに関するコンパイラ固有の問題について説明します。 - 非同期デリゲートのプログラミング サンプル
簡単なサンプルを使って非同期デリゲートの使用方法を示します。このサンプルでは、いくつかの数値の因数分解を実行します。
関連項目
- 非同期呼び出しの組み込み
.NET Framework における非同期プログラミングの位置付けについて説明します。