方法 : マネージ コードを使用して Web サービスに非同期にアクセスする
更新 : 2007 年 11 月
Web サービスのプロキシ クラスのすべての Web メソッドには、対応する非同期のメソッドがあります。プロキシ クラスは、すべての Web メソッドについて、非同期メソッドと対応するイベントを自動的に生成します。非同期メソッドが呼び出された場合、メソッドは別のスレッドで実行され、メソッドが戻るときに対応するイベントが発生します。対応するイベントのハンドラを作成することによって非同期メソッドが戻るときにコードを実行できます。
Visual Basic で Web メソッドを非同期に呼び出すには
次のように、WithEvents キーワードを使用して Web サービスのプロキシ クラスのインスタンスを宣言します。
Dim WithEvents myWebService As New Service1
メモ : プロジェクトには、Web サービスへの Web 参照が必要です。
コード エディタで、Handles キーワードを使用し、呼び出すメソッドに対応する MethodCompleted イベントのイベント ハンドラを作成します。たとえば、HelloWorld というメソッドを非同期に呼び出していた場合は、次のようなメソッドを作成します。
Private Sub HelloWorldComplete(ByVal sender As Object, _ ByVal completed As localhost.HellowWorldCompletedEventArgs) _ Handles myWebService.HelloWorldCompleted ' Insert code to implement the method here End Sub
MethodCompleted イベントを処理するメソッドは、そのイベントのシグネチャと一致している必要があります。通常、このメソッドでは、送信元を表す Object 引数と、メソッドの EventArgs のインスタンス (Web サービスのプロキシ クラスと同じ名前空間に存在します) が必要です。また、コード エディタを使用してイベント ハンドラを自動作成することもできます。詳細については、「方法 : Visual Basic コード エディタでのイベント ハンドラの作成」を参照してください。
メソッドの MethodAsync フォームを使用して Web メソッドを呼び出します。たとえば、HelloWorld という Web メソッドを非同期に呼び出していた場合は、次のようになります。
HelloWorldAsync
メソッドの戻り値は、EventArgs の Result プロパティで参照できます。
C# で Web メソッドを非同期に呼び出すには
次のように Web サービスのプロキシ クラスのインスタンスを宣言します。
private localhost.Service1 myWebService = new localhost.Service1 ();
メモ : プロジェクトには、Web サービスへの Web 参照が必要です。
コード エディタで、呼び出すメソッドに対応する MethodCompleted イベントのイベント ハンドラを追加します。たとえば、HelloWorld というメソッドを非同期に呼び出していた場合は、次のようなメソッドを作成します。
private void HelloWorldCompleted(Object sender, localhost.HelloWorldCompletedEventArgs Completed) { // Insert code to implement the method here }
MethodCompleted イベントを処理するメソッドは、そのイベントのシグネチャと一致している必要があります。通常、このメソッドでは、送信元を表す Object 引数と、メソッドの EventArgs のインスタンス (Web サービスのプロキシ クラスと同じ名前空間に存在します) が必要です。また、コード エディタを使用してイベント ハンドラを自動作成することもできます。詳細については、「方法 : イベント サブスクリプションとサブスクリプションの解除 (C# プログラミング ガイド)」を参照してください。
次のように、クラスのコンストラクタで MethodCompleted イベント ハンドラをイベントのハンドラのリストに追加します。
private void Form1_Load(object sender, EventArgs e) { myWebService.HelloWorldCompleted += new localhost.HelloWorldCompletedEventHandler(HelloWorldCompleted); }
メソッドの MethodAsync フォームを使用して Web メソッドを呼び出します。たとえば、HelloWorld という Web メソッドを非同期に呼び出していた場合は、次のようになります。
HelloWorldAsync();
メソッドの戻り値は、EventArgs の Result プロパティで参照できます。