Procedura: chiamare un servizio Web in modo asincrono (Visual Basic)
Questo esempio associa un gestore a un evento gestore asincrono di un servizio Web in modo che possa recuperare il risultato di una chiamata di metodo sincrono. L'esempio usa il servizio Web DemoTemperatureService disponibile all'indirizzo http://www.xmethods.net
.
Quando in un progetto si fa riferimento a un servizio Web nell'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio, questo viene aggiunto all'oggetto My.WebServices
e l'IDE genera una classe proxy del client per accedere a un servizio Web specifico
La classe proxy consente di chiamare i metodi del servizio Web in modo sincrono; in altre parole l'applicazione aspetta che la funzione sia terminata. Inoltre, il proxy crea membri aggiuntivi che contribuiscono a chiamare il metodo in modo asincrono. Per ogni funzione di servizio Web, NameOfWebServiceFunction, il proxy crea una subroutine NameOfWebServiceFunctionAsync
, un evento NameOfWebServiceFunctionCompleted
e una classe NameOfWebServiceFunctionCompletedEventArgs
. L'esempio dimostra come usare i membri asincroni per accedere alla funzione getTemp
del servizio Web DemoTemperatureService.
Nota
Tale codice non funziona nelle applicazioni Web perché ASP.NET non supporta l'oggetto My.WebServices
.
Chiamare un servizio Web in modo asincrono
Fare riferimento al servizio Web DemoTemperatureService Web in
http://www.xmethods.net
. L'indirizzo èhttp://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
Aggiungere un gestore eventi per l'evento
getTempCompleted
:Private Sub getTempCompletedHandler(ByVal sender As Object, ByVal e As net.xmethods.www.getTempCompletedEventArgs) MsgBox("Temperature: " & e.Result) End Sub
Nota
Non è possibile usare l'istruzione
Handles
per associare un gestore eventi agli eventi dell'oggettoMy.WebServices
.Aggiungere un campo di cui tenere traccia se il gestore eventi è stato aggiunto all'evento
getTempCompleted
:Private handlerAttached As Boolean = False
Aggiungere un metodo che consenta di aggiungere, se necessario, il gestore eventi all'evento
getTempCompleted
e di chiamare il metodogetTempAsync
: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
Per chiamare il metodo Web
getTemp
in modo asincrono, chiamare il metodoCallGetTempAsync
. Al termine dell'esecuzione del metodo Web il relativo valore restituito viene passato al gestore eventigetTempCompletedHandler
.