Compartilhar 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 IDE (Ambiente de Desenvolvimento Integrado) do Visual Studio, ele é adicionado ao My.WebServices objeto e o IDE gera uma classe 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.

Observação

Esse código não funciona em aplicativos Web, pois ASP.NET não dá suporte ao 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 evento getTempCompleted:

    Private Sub getTempCompletedHandler(ByVal sender As Object,
        ByVal e As net.xmethods.www.getTempCompletedEventArgs)
    
        MsgBox("Temperature: " & e.Result)
    End Sub
    

    Observação

    Você não pode usar a Handles instrução para associar um manipulador de eventos aos My.WebServices eventos do objeto.

  3. Adicione um campo para acompanhar 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 é concluído, seu valor retornado é passado para o getTempCompletedHandler manipulador de eventos.

Consulte também