Como chamar um serviço Web de forma assíncrona (Visual Basic)
Este exemplo anexa um manipulador ao evento de manipulador assíncrono de um serviço Web, para que ele possa recuperar o resultado de uma chamada de método assíncrono. Este exemplo usou o serviço Web DemoTemperatureService em http://www.xmethods.net
.
Quando você faz referência a um serviço Web em seu projeto no Visual Studio Integrated Development Environment (IDE), ele é adicionado ao My.WebServices
objeto e o IDE gera uma classe de proxy de cliente para acessar um serviço Web especificado
A classe proxy permite que você chame os métodos de serviço Web de forma síncrona, onde seu aplicativo aguarda a conclusão da função. Além disso, o proxy cria membros adicionais para ajudar a chamar o método de forma assíncrona. Para cada função de serviço Web, NameOfWebServiceFunction, o proxy cria uma sub-rotina NameOfWebServiceFunctionAsync
, um evento NameOfWebServiceFunctionCompleted
e uma classe NameOfWebServiceFunctionCompletedEventArgs
. Este exemplo demonstra como usar os membros assíncronos para acessar a getTemp
função do serviço Web DemoTemperatureService.
Nota
Esse código não funciona em aplicativos Web, porque ASP.NET não suporta o My.WebServices
objeto.
Chamar um serviço Web de forma assíncrona
Consulte o serviço Web DemoTemperatureService em
http://www.xmethods.net
. O endereço éhttp://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
Adicione um manipulador de eventos para o
getTempCompleted
evento:Private Sub getTempCompletedHandler(ByVal sender As Object, ByVal e As net.xmethods.www.getTempCompletedEventArgs) MsgBox("Temperature: " & e.Result) End Sub
Nota
Não é possível usar a
Handles
instrução para associar um manipulador de eventos aosMy.WebServices
eventos do objeto.Adicione um campo para controlar se o manipulador de eventos foi adicionado ao
getTempCompleted
evento:Private handlerAttached As Boolean = False
Adicione um método para adicionar o manipulador de eventos ao
getTempCompleted
evento, se necessário, e para chamar ogetTempAsync
método: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
Para chamar o
getTemp
método Web de forma assíncrona, chame oCallGetTempAsync
método. Quando o método Web termina, seu valor de retorno é passado para o manipulador degetTempCompletedHandler
eventos.