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
Faites référence au service web DemoTemperatureService disponible sur
http://www.xmethods.net
. L'adresse esthttp://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'objetMy.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éthodegetTempAsync
: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éthodeCallGetTempAsync
. Quand la méthode web se termine, sa valeur de retour est passée au gestionnaire d'événementsgetTempCompletedHandler
.