Partager via


Comment : accéder de manière asynchrone à un service Web en code managé

Mise à jour : novembre 2007

Chaque méthode Web sur une classe proxy de service Web a un équivalent asynchrone. La classe proxy génère automatiquement des méthodes asynchrones et un événement correspondant pour chaque méthode Web. Lorsque la méthode asynchrone est appelée, elle s'exécute sur un autre thread et déclenche son événement correspondant lorsqu'elle retourne la valeur résultante. Vous pouvez exécuter du code lorsqu'une méthode asynchrone retourne sa valeur en créant un gestionnaire pour son événement correspondant.

Pour appeler de façon asynchrone une méthode Web avec Visual Basic

  1. Déclarez une instance de la classe proxy de service Web à l'aide du mot clé WithEvents, comme indiqué ci-dessous :

    Dim WithEvents myWebService As New Service1
    
    Remarque :

    Votre projet doit contenir une référence Web au service Web.

  2. Dans l'éditeur de code, utilisez le mot clé Handles pour créer un gestionnaire d'événements pour l'événement MethodCompleted qui correspond à la méthode que vous souhaitez appeler. Par exemple, si vous appeliez une méthode appelée HelloWorld de façon asynchrone, vous créeriez une méthode semblable à ce qui suit :

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

    Notez que la méthode qui gère l'événement MethodCompleted doit correspondre à la signature de l'événement. Cela nécessite généralement un argument Object permettant de représenter l'expéditeur et une instance d'EventArgs de la méthode qui réside dans le même espace de noms que la classe proxy de service Web. Vous pouvez aussi utiliser l'éditeur de code pour créer automatiquement des gestionnaires d'événements. Pour plus d'informations, consultez Comment : créer des gestionnaires d'événements dans l'éditeur de code Visual Basic.

  3. Appelez la méthode Web à l'aide de la forme MethodAsync de la méthode. Par exemple, si vous appeliez une méthode Web appelée HelloWorld de façon asynchrone, elle ressemblerait à ceci :

    HelloWorldAsync
    

    Notez que la valeur de retour de la méthode est disponible dans la propriété Result d'EventArgs.

Pour appeler de façon asynchrone une méthode Web avec C#

  1. Déclarez une instance de la classe proxy de service Web, comme indiqué ci-dessous :

    private localhost.Service1 myWebService = new localhost.Service1
    ();
    
    Remarque :

    Votre projet doit contenir une référence Web au service Web.

  2. Dans l'éditeur de code, ajoutez un gestionnaire d'événements pour l'événement MethodCompleted qui correspond à la méthode que vous souhaitez appeler. Par exemple, si vous appeliez une méthode appelée HelloWorld de façon asynchrone, vous créeriez une méthode semblable à ce qui suit :

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

    Notez que la méthode qui gère l'événement MethodCompleted doit correspondre à la signature de l'événement. Cela nécessite généralement un argument Object permettant de représenter l'expéditeur et une instance d'EventArgs de la méthode qui réside dans le même espace de noms que la classe proxy de service Web. Vous pouvez aussi utiliser l'éditeur de code pour créer automatiquement des gestionnaires d'événements. Pour plus d'informations, consultez Comment : s'abonner et annuler l'abonnement à des événements (Guide de programmation C#).

  3. Dans le constructeur de la classe, ajoutez le gestionnaire d'événements MethodCompleted à la liste des gestionnaires de cet événement, comme indiqué ci-dessous :

    private void Form1_Load(object sender, EventArgs e)
    {
        myWebService.HelloWorldCompleted += new 
        localhost.HelloWorldCompletedEventHandler(HelloWorldCompleted);
    }
    
  4. Appelez la méthode Web à l'aide de la forme MethodAsync de la méthode. Par exemple, si vous appeliez une méthode Web appelée HelloWorld de façon asynchrone, elle ressemblerait à ceci :

    HelloWorldAsync();
    

    Notez que la valeur de retour de la méthode est disponible dans la propriété Result d'EventArgs.

Voir aussi

Concepts

Communications asynchrones avec les services Web XML

Autres ressources

Accès aux services Web en code managé