Partilhar via


Como: Acessar um serviço Web de forma assíncrona em código gerenciado

Cada método Web em uma classe proxy de serviço da Web possui uma cópia assíncrona.A classe proxy gera automaticamente métodos assíncronos e um evento correspondente para cada método Web.Quando o método assíncrono é chamado, ele é executado em outro segmento e dispara o evento correspondente quando ele retorna.Você pode executar código quando um método assíncrono retorna, através da criação de um manipulador para seus eventos correspondentes.

Chamar um método Web de forma assíncrona com o Visual Basic

  1. Declare uma instância da classe proxy de serviço da Web usando a palavra-chave WithEvents, conforme mostrado abaixo:

    Dim WithEvents myWebService As New Service1
    
    Observação:

    O seu projeto deve conter uma referência da Web para o serviço da Web.

  2. No editor de código, use a palavra-chave Handles para criar um manipulador de eventos para o evento MethodCompleted, que corresponde ao método que você deseja chamar.Por exemplo, se você estivesse chamando um método chamado HelloWorld assincronamente, você deveria criar um método semelhante ao seguinte:

    Private Sub HelloWorldComplete(ByVal sender As Object, _
       ByVal completed As localhost.HellowWorldCompletedEventArgs) _
       Handles myWebService.HelloWorldCompleted
    ' Insert code to implement the method here
    End Sub
    

    Observe que o método que manipula o evento MethodCompleted deve corresponder a assinatura do evento.Isso comumente exige um argumento Object para representar o remetente e uma instância do EventArgs do método, a qual consiste no mesmo namespace que a classe proxy de serviço da Web.Você também pode usar o Code Editor para criar automaticamente manipuladores de eventos para você.Para obter mais informações, consulte Como: Criar manipuladores de eventos no Editor de código do Visual Basic.

  3. Chame o método Web usando o formulário MethodAsync do método.Por exemplo, se você estivesse chamando um método Web chamado HelloWorld assincronamente, ele deveria ser da seguinte forma:

    HelloWorldAsync
    

    Observe que o valor de retorno do método está disponível na propriedade Result do EventArgs.

Chamar um método Web de forma assíncrona com C#

  1. Declare uma instância da classe proxy de serviço da Web, conforme mostrado abaixo:

    private localhost.Service1 myWebService = new localhost.Service1
    ();
    
    Observação:

    O seu projeto deve conter uma referência da Web para o serviço da Web.

  2. No Code Editor, adicione um manipulador para o evento MethodCompleted que corresponde ao método que você deseja chamar.Por exemplo, se você estivesse chamando um método chamado HelloWorld assincronamente, você deveria criar um método semelhante ao seguinte:

    private void HelloWorldCompleted(Object sender, 
        localhost.HelloWorldCompletedEventArgs Completed) 
        {
            // Insert code to implement the method here
        }
    

    Observe que o método que manipula o evento MethodCompleted deve corresponder a assinatura do evento.Isso comumente exige um argumento Object para representar o remetente e uma instância do EventArgs do método, a qual consiste no mesmo namespace que a classe proxy de serviço da Web.Você também pode usar o Code Editor para criar automaticamente manipuladores de eventos para você.Para obter mais informações, consulte Como: Assinar e cancelamento de inscrição de eventos (Guia de programação C#).

  3. No Construtor para a classe, adicione o manipulador de evento do MethodCompleted à lista de manipuladores para tal evento, como mostrado abaixo:

    private void Form1_Load(object sender, EventArgs e)
    {
        myWebService.HelloWorldCompleted += new 
        localhost.HelloWorldCompletedEventHandler(HelloWorldCompleted);
    }
    
  4. Chame o método Web usando o formulário MethodAsync do método.Por exemplo, se você estivesse chamando um método Web chamado HelloWorld assincronamente, ele deveria ser da seguinte forma:

    HelloWorldAsync();
    

    Observe que o valor de retorno do método está disponível na propriedade Result do EventArgs.

Consulte também

Conceitos

Comunicando Serviços Web XML Asynchronously

Outros recursos

Acessando Web Services em código gerenciado