Практическое руководство. Асинхронный вызов веб-службы (Visual Basic)
В этом примере к асинхронному обработчику события веб-службы присоединяется обработчик, после чего он может извлекать результат асинхронного вызова метода. В этом примере используется веб-служба DemoTemperatureService, расположенная по адресу http://www.xmethods. net.
При ссылке на веб-службу в проекте в интегрированной среде разработки Visual Studio она добавляется в объект My.WebServices, и среда разработки создает клиентский прокси-класс для доступа к указанной веб-службе
Прокси-класс позволяет вызывать методы веб-служб синхронно, пока приложение ожидает окончания выполнения функции. Кроме того, прокси создает дополнительные члены, позволяющие вызывать метод асинхронно. Для каждой функции веб-службы NameOfWebServiceFunction прокси-класс создает подпрограмму NameOfWebServiceFunctionAsync, событие NameOfWebServiceFunctionCompleted и класс NameOfWebServiceFunctionCompletedEventArgs. В этом примере демонстрируется использование асинхронных членов для получения доступа к функции getTemp веб-службы DemoTemperatureService.
Примечание
Этот код не работает в веб-приложениях, поскольку ASP.NET не поддерживает объект My.WebServices.
Асинхронный вызов веб-службы
Создайте ссылку на веб-службу DemoTemperatureService, находящуюся по адресу http://www.xmethods. net. Ее адрес —
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, если это необходимо, и вызывающий метод 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 асинхронно, вызовите метод CallGetTempAsync. После завершения веб-метода его возвращаемое значение передается обработчику события getTempCompletedHandler.
См. также
Ссылки
Объект My.WebServices (Visual Basic)