Partager via


Guide pratique pour appeler un service web de manière asynchrone (Visual Basic)

Cet exemple attache un gestionnaire à l'événement de gestionnaire asynchrone d'un service web pour qu'il puisse récupérer le résultat d'un appel de méthode asynchrone. Cet exemple utilise le service web DemoTemperatureService disponible sur http://www.xmethods.net.

Quand vous faites référence à un service web dans votre projet dans l'IDE (Integrated Development Environment) de Visual Studio, il est ajouté à l'objet My.WebServices et l'IDE génère une classe proxy cliente pour accéder à un service web spécifié.

La classe proxy vous permet d'appeler les méthodes du service web de manière synchrone (votre application attend que la fonction soit terminée). De plus, le proxy crée des membres supplémentaires pour aider à appeler la méthode de manière asynchrone. Pour chaque fonction du service web, NameOfWebServiceFunction, le proxy crée une sous-routine NameOfWebServiceFunctionAsync, un événement NameOfWebServiceFunctionCompleted et une classe NameOfWebServiceFunctionCompletedEventArgs. Cet exemple montre comment utiliser les membres asynchrones pour accéder à la fonction getTemp du service web DemoTemperatureService.

Notes

Ce code ne fonctionne pas dans les applications web, car ASP.NET ne prend pas en charge l'objet My.WebServices.

Appeler un service web de manière asynchrone

  1. Faites référence au service web DemoTemperatureService disponible sur http://www.xmethods.net. L'adresse est

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. Ajoutez un gestionnaire d'événements pour l'événement getTempCompleted :

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

    Notes

    Vous ne pouvez pas utiliser l'instruction Handles pour associer un gestionnaire d'événements aux événements de l'objet My.WebServices.

  3. Ajoutez un champ pour suivre si le gestionnaire d'événements a été ajouté à l'événement getTempCompleted :

    Private handlerAttached As Boolean = False
    
  4. Ajoutez une méthode pour ajouter le gestionnaire d'événements à l'événement getTempCompleted, si nécessaire, et pour appeler la méthode getTempAsync :

    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
    

    Pour appeler la méthode web getTemp de manière asynchrone, appelez la méthode CallGetTempAsync. Quand la méthode web se termine, sa valeur de retour est passée au gestionnaire d'événements getTempCompletedHandler.

Voir aussi