ここでは、クライアントからサービス操作に非同期にアクセスする方法について説明します。このトピックのサービスは、ICalculator インターフェイスを実装しています。クライアントは、イベント ドリブンの非同期呼び出しモデルを使用して、このインターフェイスで操作を非同期に呼び出すことができます (イベント ベースの非同期呼び出しモデルの詳細については、「Multithreaded Programming with the Event-based Asynchronous Pattern」を参照してください)。サービス操作を非同期に実装する方法を示す例については、「方法 : 非同期サービス操作を実装する」を参照してください。同期操作と非同期操作の詳細については、「同期操作と非同期操作」を参照してください。
ICalculator
次のコマンドに示すように、/async と /tcv:Version35 の両方のコマンド オプションを指定して ServiceModel Metadata Utility Tool (Svcutil.exe) を実行します。
svcutil /n:http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples http://localhost:8000/servicemodelsamples/service/mex /a /tcv:Version35
これにより、同期操作と標準のデリゲート ベースの非同期操作だけでなく、以下を含む WCF クライアント クラスも生成されます。
次のサンプル コードに示すように、呼び出し元アプリケーションで、非同期操作の完了時に呼び出されるコールバック メソッドを作成します。
操作を呼び出す前に、<operationName>EventArgs 型の新しいジェネリック System.EventHandler を使用して、(前の手順で作成した) ハンドラ メソッドを <operationName>Completed イベントに追加します。次に、<operationName>Async メソッドを呼び出します。次に例を示します。