次の方法で共有


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

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

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

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

[!メモ]

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

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

  1. http://www.xmethods.net の DemoTemperatureService Web net」と入力します。アドレスは次のとおりです。

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. getTempCompleted イベントのイベント ハンドラーを追加します。

    Private Sub getTempCompletedHandler(ByVal sender As Object, 
        ByVal e As net.xmethods.www.getTempCompletedEventArgs)
    
        MsgBox("Temperature: " & e.Result)
    End Sub
    

    [!メモ]

    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 イベント ハンドラーに渡されます。

参照

関連項目

My.WebServices オブジェクト

概念

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