デリゲートを使用した非同期プログラミングAsynchronous Programming Using Delegates

デリゲートを使用すると、同期メソッドを非同期的に呼び出すことができます。Delegates enable you to call a synchronous method in an asynchronous manner. デリゲートを同期的に呼び出すと、Invoke メソッドによって対象メソッドが現在のスレッドで直接呼び出されます。When you call a delegate synchronously, the Invoke method calls the target method directly on the current thread. BeginInvoke メソッドが呼び出されると、共通言語ランタイム (CLR) は要求をキューに置き、すぐに呼び出し元に戻ります。If the BeginInvoke method is called, the common language runtime (CLR) queues the request and returns immediately to the caller. 対象メソッドは、スレッド プールのスレッドで非同期的に呼び出されます。The target method is called asynchronously on a thread from the thread pool. 要求を送信した元のスレッドは、対象メソッドと並行して継続実行できます。The original thread, which submitted the request, is free to continue executing in parallel with the target method. BeginInvoke メソッドの呼び出しにコールバック メソッドを指定した場合、対象メソッドの終了時に、そのコールバック メソッドが呼び出されます。If a callback method has been specified in the call to the BeginInvoke method, the callback method is called when the target method ends. コールバック メソッドでは、EndInvoke メソッドを使用して、戻り値と、入出力パラメーターまたは出力専用パラメーターを取得します。In the callback method, the EndInvoke method obtains the return value and any input/output or output-only parameters. BeginInvoke の呼び出しにコールバック メソッドを指定しなかった場合は、BeginInvoke を呼び出したスレッドから EndInvoke を呼び出すことができます。If no callback method is specified when calling BeginInvoke, EndInvoke can be called from the thread that called BeginInvoke.

重要

コンパイラは、ユーザーが指定したデリゲート シグネチャを使用して、InvokeBeginInvokeEndInvoke の各メソッドを持つデリゲート クラスを出力します。Compilers should emit delegate classes with Invoke, BeginInvoke, and EndInvoke methods using the delegate signature specified by the user. BeginInvoke メソッドと EndInvoke メソッドは、ネイティブとして修飾されます。The BeginInvoke and EndInvoke methods should be decorated as native. これら 2 つのメソッドはネイティブとしてマークされるため、クラスの読み込み時には、CLR によって自動的にメソッドが実装されます。Because these methods are marked as native, the CLR automatically provides the implementation at class load time. ローダーは、これらのメソッドがオーバーライドされないことを保証します。The loader ensures that they are not overridden.

このセクションの内容In This Section

同期メソッドの非同期呼び出しCalling Synchronous Methods Asynchronously
デリゲートを使用した通常のメソッドの非同期呼び出しについて説明すると共に、簡単なコード例を示して、非同期呼び出しが戻るのを待機する 4 つの方法を紹介します。Discusses the use of delegates to make asynchronous calls to ordinary methods, and provides simple code examples that show the four ways to wait for an asynchronous call to return.

イベント ベースの非同期パターン (EAP)Event-based Asynchronous Pattern (EAP)
.NET Framework での非同期プログラミングについて説明します。Describes asynchronous programming with the .NET Framework.

関連項目See also