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, afin qu’il puisse récupérer le résultat d’un appel de méthode asynchrone. Cet exemple a utilisé le service Web DemoTemperatureService à l’adresse http://www.xmethods.net.

Lorsque vous référencez un service Web dans votre projet dans l’environnement de développement intégré (IDE) 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 de service Web de manière synchrone, où votre application attend que la fonction se termine. En outre, le proxy crée des membres supplémentaires pour vous aider à appeler la méthode de manière asynchrone. Pour chaque fonction de service web, NameOfWebServiceFunction, le proxy crée une sous-routine NameOfWebServiceFunctionAsync, un événement NameOfWebServiceFunction et une classe CompletedCompletedEventArgs. Cet exemple montre comment utiliser les membres asynchrones pour accéder à la getTemp fonction du service Web DemoTemperatureService.

Remarque

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 façon asynchrone

  1. Référencez le service Web DemoTemperatureService à l’adresse 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
    

    Remarque

    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 effectuer le suivi 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 getTempAsync méthode :

    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 getTemp méthode Web de façon asynchrone, appelez la CallGetTempAsync méthode. Une fois la méthode Web terminée, sa valeur de retour est transmise au getTempCompletedHandler gestionnaire d’événements.

Voir aussi