Condividi tramite


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

  1. 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.

  2. 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.

  3. Aggiungere un campo di cui tenere traccia se il gestore eventi è stato aggiunto all'evento getTempCompleted.

    Private handlerAttached As Boolean = False
    
  4. 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

Riferimenti

Oggetto My.WebServices