Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом примере обработчик подключается к событию асинхронного обработчика веб-службы, чтобы он смог получить результат асинхронного вызова метода. В этом примере используется веб-служба DemoTemperatureService по адресу http://www.xmethods.net.
При ссылке на веб-службу в проекте в интегрированной среде разработки Visual Studio (IDE) он добавляется в 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событие при необходимости и вызова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 SubgetTempЧтобы вызвать веб-метод асинхронно, вызовитеCallGetTempAsyncметод. Когда веб-метод завершит работу, его возвращаемое значение передается обработчикуgetTempCompletedHandlerсобытий.