Compartir a través de


Cómo: Llamar a un servicio web de forma asincrónica (Visual Basic)

En este ejemplo se asocia un controlador al evento de controlador asincrónico de un servicio web, de modo que pueda recuperar el resultado de una llamada de método asincrónico. En este ejemplo se usó el servicio web DemoTemperatureService en http://www.xmethods.net.

Cuando se hace referencia a un servicio web en el proyecto en el entorno de desarrollo integrado (IDE) de Visual Studio, se agrega al My.WebServices objeto y el IDE genera una clase de proxy de cliente para acceder a un servicio web especificado.

La clase de proxy permite llamar a los métodos de servicio web de forma sincrónica, donde la aplicación espera a que se complete la función. El proxy crea además otros miembros para ayudar a llamar al método asincrónicamente. Para cada función de servicio web, NameOfWebServiceFunction, el proxy crea una subrutina NameOfWebServiceFunctionAsync, un evento NameOfWebServiceFunction y una clase CompletedCompletedEventArgs. En este ejemplo se muestra cómo usar los miembros asincrónicos para acceder a la getTemp función del servicio web DemoTemperatureService.

Nota:

Este código no funciona en aplicaciones web, ya que ASP.NET no admite el My.WebServices objeto .

Llamada a un servicio web de forma asincrónica

  1. Haga referencia al servicio web DemoTemperatureService en http://www.xmethods.net. La dirección es

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. Agregue un controlador de eventos para el getTempCompleted evento:

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

    Nota:

    No se puede usar la Handles instrucción para asociar un controlador de eventos a los My.WebServices eventos del objeto.

  3. Agregue un campo para realizar un seguimiento si el controlador de eventos se ha agregado al getTempCompleted evento:

    Private handlerAttached As Boolean = False
    
  4. Agregue un método para agregar el controlador de eventos al getTempCompleted evento, si es necesario, y para llamar al 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
    

    Llame al método getTemp para llamar al método web CallGetTempAsync asincrónicamente. Cuando finaliza el método Web, su valor devuelto se pasa al controlador de getTempCompletedHandler eventos.

Consulte también