Partilhar via


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

  1. Consulte o serviço Web DemoTemperatureService em http://www.xmethods.net. O endereço é

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. 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 aos My.WebServices eventos do objeto.

  3. Adicione um campo para controlar se o manipulador de eventos foi adicionado ao getTempCompleted evento:

    Private handlerAttached As Boolean = False
    
  4. Adicione um método para adicionar o manipulador de eventos ao getTempCompleted evento, se necessário, e para chamar o getTempAsync 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 o CallGetTempAsync método. Quando o método Web termina, seu valor de retorno é passado para o manipulador de getTempCompletedHandler eventos.

Consulte também