方法: Web サービスを非同期で呼び出す (Visual Basic)
この例では、Web サービスの非同期ハンドラー イベントにハンドラーをアタッチして、非同期メソッド呼び出しの結果を取得できるようにします。 この例では、http://www.xmethods.net
にある DemoTemperatureService Web サービスを使用しています。
Visual Studio 統合開発環境 (IDE) でプロジェクトの Web サービスを参照すると、この Web サービスが My.WebServices
オブジェクトに追加され、指定された Web サービスにアクセスするためのクライアント プロキシ クラスが IDE によって生成されます。
プロキシ クラスを使用すると、Web サービス メソッドを同期的に呼び出すことができ、この場合、アプリケーションは関数が完了するまで待機します。 また、プロキシはメソッドを非同期的に呼び出すために使用できる追加のメンバーを作成します。 Web サービス関数 NameOfWebServiceFunction ごとに、プロキシは NameOfWebServiceFunctionAsync
サブルーチン、NameOfWebServiceFunctionCompleted
イベント、および NameOfWebServiceFunctionCompletedEventArgs
クラスを作成します。 この例では、DemoTemperatureService Web サービスの getTemp
関数にアクセスする非同期メンバーの使用方法を示します。
注意
ASP.NET では My.WebServices
オブジェクトがサポートされていないため、このコードは Web アプリケーションでは動作しません。
Web サービスを非同期で呼び出す
http://www.xmethods.net
にある DemoTemperatureService Web サービスを参照します。 アドレスは次のとおりです。http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
getTempCompleted
イベントのイベント ハンドラーを追加します。Private Sub getTempCompletedHandler(ByVal sender As Object, ByVal e As net.xmethods.www.getTempCompletedEventArgs) MsgBox("Temperature: " & e.Result) End Sub
注意
Handles
ステートメントを使用して、イベント ハンドラーをMy.WebServices
オブジェクトのイベントに関連付けることはできません。イベント ハンドラーが
getTempCompleted
イベントに追加されたかどうかを追跡するためのフィールドを追加します。Private handlerAttached As Boolean = False
必要に応じて、イベント ハンドラーを
getTempCompleted
イベントに追加するメソッドを追加し、getTempAsync
メソッドを呼び出すメソッドを追加します。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
イベント ハンドラーに渡されます。
関連項目
.NET