Procedura: chiamare un servizio Web in modo asincrono
Aggiornamento: novembre 2007
Nell'esempio riportato di seguito viene associato un gestore a un evento gestore asincrono di un servizio Web in modo che esso possa recuperare il risultato di una chiamata a un metodo asincrono. Nell'esempio è stato utilizzato il servizio Web DemoTemperatureService disponibile all'indirizzo http://www.xmethods.net (informazioni in lingua inglese).
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. Nell'esempio viene mostrato come utilizzare i membri asincroni per accedere alla funzione getTemp del servizio Web DemoTemperatureService.
Nota: |
---|
Poiché ASP.NET non supporta l'oggetto My.WebServices, tale codice non funziona nelle applicazioni Web. |
Per chiamare un servizio Web in modo asincrono
Fare riferimento al servizio Web DemoTemperatureService disponibile nel sito Web http://www.xmethods.net (informazioni in lingua inglese). L'indirizzo è
http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
Per ulteriori informazioni, vedere Procedura: accedere a un servizio Web in codice gestito.
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 utilizzare l'istruzione Handles per associare un gestore eventi agli eventi dell'oggetto My.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 chiamare il metodo 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
Per chiamare il metodo Web getTemp in modo asincrono, chiamare il metodo CallGetTempAsync. Una volta che il metodo Web ha terminato, esso restituisce il valore che è stato passato al gestore eventi getTempCompletedHandler.
Vedere anche
Attività
Procedura: accedere a un servizio Web in codice gestito
Concetti
Accesso ai servizi Web dell'applicazione