Partager via


Comment : appeler un service Web de manière asynchrone

Mise à jour : novembre 2007

Cet exemple joint 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 sur http://www.xmethods.net.

Lorsque vous référencez un service Web de votre projet dans l'environnement de développement intégré (IDE) Visual Studio, il est ajouté à l'objet My.WebServices et l'environnement de développement intégré génère une classe de proxy client pour accéder à un service Web spécifié.

La classe proxy vous permet d'appeler les méthodes Web Service de façon synchrone, là où votre application attend la fin de la fonction. De plus, le proxy crée des membres supplémentaires pour aider à appeler la méthode de façon asynchrone. Pour chaque fonction de service Web, NomdeFonctionServiceWeb, le proxy crée une sous-routine NomdeFonctionServiceWebAsync, un événement NomdeFonctionServiceWebCompleted et une classe NomdeFonctionServiceWebCompletedEventArgs. Cet exemple montre comment utiliser les membres asynchrones pour accéder à la fonction getTemp du service Web DemoTemperatureService.

Remarque :

Ce code ne fonctionne pas dans les applications Web parce qu'ASP.NET ne prend pas en charge l'objet My.WebServices.

Pour appeler un service Web de façon asynchrone

  1. Référencez le service Web DemoTemperatureService sur http://www.xmethods.net. L'adresse est

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

    Pour plus d'informations, consultez Comment : accéder à un service Web en code managé.

  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 à 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 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
    

    Pour appeler de façon asynchrone la méthode Web getTemp, appelez la méthode CallGetTempAsync. Lorsque la méthode Web prend fin, sa valeur de retour est passée au gestionnaire d'événements getTempCompletedHandler.

Voir aussi

Tâches

Comment : accéder à un service Web en code managé

Concepts

Accès aux services Web d'une application

Référence

My.WebServices, objet