Partilhar via


Como: Chamar um serviço Web de forma assíncrona

Este exemplo anexa um manipulador de evento de manipulador assíncrono de um serviço Web, para que ele possa recuperar o resultado de uma telefonar de método assíncrono.Este exemplo usado o DemoTemperatureService serviço Web em http://www.xmethods.NET.

Ao fazer referência a um serviço da Web em seu projeto no Ambiente de Desenvolvimento Integrado (IDE) do Visual Studio, ele é adicionado ao objeto My.WebServices, e o IDE gera um cliente da classe proxy para acessar um serviço da Web especificado.

A classe proxy permite que você chame os métodos do serviço da Web de forma síncrona, onde o aplicativo aguarda a função para concluir.Além disso, o proxy cria membros adicionais para ajudar a chamar o método de forma assíncrona.Para cada função 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 função getTemp do serviço da Web DemoTemperatureService.

Observação:

Esse código não funciona em aplicativos da Web, porque ASP.NET não oferece suporte a My.WebServices objeto.

Chamar um serviço da Web de forma assíncrona

  1. Referência de serviço da DemoTemperatureService Web no http://www.xmethods.NET.O endereço é

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    

    Para obter mais informações, consulte Como: Acessar um serviço da Web no código gerenciado.

  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:

    Não é possível usar o Handles demonstrativo para associar um manipulador de eventos com o My.WebServices eventos do objeto.

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

    Private handlerAttached As Boolean = False
    
  4. Adicione um método para adicionar o manipulador de eventos para o evento getTempCompleted, se necessário, e para chamar o método 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
    

    Para chamar o método de Web getTemp de forma assíncrona, chame o método CallGetTempAsync.Quando o método de Web terminar, seu valor de retorno é passado para o manipulador de eventos getTempCompletedHandler.

Consulte também

Tarefas

Como: Acessar um serviço da Web no código gerenciado

Conceitos

Acessar Serviços de Aplicativos da Web

Referência

Objeto My.WebServices