デリゲートを使用すると、非同期方式で同期メソッドを呼び出します。 デリゲートを同期的に呼び出すと、 Invoke
メソッドは現在のスレッドで直接ターゲット メソッドを呼び出します。
BeginInvoke
メソッドが呼び出されると、共通言語ランタイム (CLR) は要求をキューに入れ、すぐに呼び出し元に返します。 ターゲット メソッドは、スレッド プールのスレッドで非同期的に呼び出されます。 要求を送信した元のスレッドは、ターゲット メソッドと並行して実行を続行できます。
BeginInvoke
メソッドの呼び出しでコールバック メソッドが指定されている場合は、ターゲット メソッドの終了時にコールバック メソッドが呼び出されます。 コールバック メソッドでは、 EndInvoke
メソッドは戻り値と、入力/出力または出力のみのパラメーターを取得します。
BeginInvoke
の呼び出し時にコールバック メソッドが指定されていない場合は、BeginInvoke
を呼び出したスレッドからEndInvoke
を呼び出すことができます。
Von Bedeutung
コンパイラは、ユーザーによって指定されたデリゲート シグネチャを使用して、 Invoke
、 BeginInvoke
、および EndInvoke
メソッドを使用してデリゲート クラスを出力する必要があります。
BeginInvoke
メソッドとEndInvoke
メソッドはネイティブとして装飾する必要があります。 これらのメソッドはネイティブとしてマークされているため、CLR はクラスの読み込み時に自動的に実装を提供します。 ローダーは、オーバーライドされていないことを確認します。
このセクションにて
同期メソッドの非同期呼び出し
デリゲートを使用して通常のメソッドに非同期呼び出しを行う方法について説明し、非同期呼び出しが返されるのを待つ 4 つの方法を示す簡単なコード例を示します。
関連セクション
イベント ベースの非同期パターン (EAP)
.NET での非同期プログラミングについて説明します。
こちらも参照ください
.NET