Comment : 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 à l'adresse 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, Nom_Fonction_Service_Web, le proxy crée une sous-routine Nom_Fonction_Service_WebAsync, un événement Nom_Fonction_Service_WebCompleted et une classe Nom_Fonction_Service_WebCompletedEventArgs. 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.
Pour appeler un service web de manière asynchrone
Faites référence au service web DemoTemperatureService disponible à l'adresse http://www.xmethods. net. L'adresse est
http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
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.
Ajoutez un champ pour suivre si le gestionnaire d'événements a été ajouté à l'événement getTempCompleted :
Private handlerAttached As Boolean = False
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 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.