この例では、Web サービスの非同期ハンドラー イベントにハンドラーをアタッチして、非同期メソッド呼び出しの結果を取得できるようにします。 この例では、 http://www.xmethods.net
で DemoTemperatureService Web サービスを使用しています。
Visual Studio 統合開発環境 (IDE) でプロジェクト内の Web サービスを参照すると、その Web サービスが My.WebServices
オブジェクトに追加され、IDE によって、指定された Web サービスにアクセスするためのクライアント プロキシ クラスが生成されます。
プロキシ クラスを使用すると、アプリケーションが関数の完了を待機する 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