次の方法で共有


方法 : Web サービスを非同期で呼び出す

更新 : 2007 年 11 月

この例では、非同期メソッド呼び出しの結果を取得できるように、Web サービスの非同期ハンドラ イベントにハンドラが割り当てられます。この例では、http://www.xmethods.net の DemoTemperatureService Web サービスを使用しています。

Visual Studio 統合開発環境 (IDE) では、プロジェクトで Web サービスを参照すると、My.WebServices オブジェクトにその Web サービスが追加され、その Web サービスにアクセスするためのクライアント プロキシ クラスが生成されます。

このプロキシ クラスを使用すると、Web サービス メソッドを同期で呼び出すことができます。つまりアプリケーションは、関数が終了するまで待機します。さらに、このプロキシは、メソッドを非同期で呼び出すために使用できる、追加的なメンバを作成します。プロキシは、それぞれの Web サービス関数 NameOfWebServiceFunction について、NameOfWebServiceFunctionAsync サブルーチン、NameOfWebServiceFunctionCompleted イベント、および NameOfWebServiceFunctionCompletedEventArgs クラスを作成します。この例では、非同期のメンバを使用して、DemoTemperatureService Web サービスの getTemp 関数にアクセスする方法を説明します。

ms233842.alert_note(ja-jp,VS.90).gifメモ :

ASP.NET は My.WebServices オブジェクトをサポートしないため、このコードは Web アプリケーションでは動作しません。

Web サービスを非同期で呼び出すには

  1. http://www.xmethods.net の DemoTemperatureService Web サービスを参照します。アドレスは次のとおりです。

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    

    詳細については、「方法 : マネージ コードを使用して Web サービスにアクセスする」を参照してください。

  2. getTempCompleted イベントのイベント ハンドラを追加します。

    Private Sub getTempCompletedHandler(ByVal sender As Object, _
        ByVal e As net.xmethods.www.getTempCompletedEventArgs)
    
        MsgBox("Temperature: " & e.Result)
    End Sub
    
    ms233842.alert_note(ja-jp,VS.90).gifメモ :

    Handles ステートメントを使用して My.WebServices オブジェクトのイベントにイベント ハンドラを関連付けることはできません。

  3. イベント ハンドラが getTempCompleted イベントに追加されているかどうかを追跡するためのフィールドを追加します。

    Private handlerAttached As Boolean = False
    
  4. getTempCompleted イベントにイベント ハンドラを追加するためのメソッドを必要に応じて追加し、getTempAsynch メソッドを呼び出すためのメソッドを追加します。

    Sub CallGetTempAsync(ByVal zipCode As Integer)
        If Not handlerAttached Then
            AddHandler _
                My.WebServices.TemperatureService.getTempCompleted, _
                AddressOf Me.TS_getTempCompleted
            handlerAttached = True
        End If
        My.WebServices.TemperatureService.getTempAsync(zipCode)
    End Sub
    

    getTemp Web メソッドを非同期で呼び出すには、CallGetTempAsync メソッドを呼び出します。Web メソッドが完了すると、その戻り値が getTempCompletedHandler イベント ハンドラに渡されます。

参照

処理手順

方法 : マネージ コードを使用して Web サービスにアクセスする

概念

アプリケーションの Web サービスへのアクセス

参照

My.WebServices オブジェクト