Condividi tramite


Procedura: Chiamare un servizio Web in modo asincrono (Visual Basic)

In questo esempio viene associato un gestore all'evento del gestore asincrono di un servizio Web, in modo che possa recuperare il risultato di una chiamata asincrona al metodo. In questo esempio è stato usato il servizio Web DemoTemperatureService all'indirizzo http://www.xmethods.net.

Quando si fa riferimento a un servizio Web nel progetto nell'IDE (Integrated Development Environment) di Visual Studio, viene aggiunto all'oggetto e l'IDE My.WebServices genera una classe proxy client per accedere a un servizio Web specificato

La classe proxy consente di chiamare i metodi del servizio Web in modo sincrono, in cui l'applicazione attende il completamento della funzione. Inoltre, il proxy crea membri aggiuntivi per chiamare il metodo in modo asincrono. Per ogni funzione del servizio Web, NameOfWebServiceFunction, il proxy crea una subroutine NameOfWebServiceFunctionAsync , un evento NameOfWebServiceFunctionCompleted e una classe NameOfWebServiceFunctionCompletedEventArgs . In questo esempio viene illustrato come usare i membri asincroni per accedere alla getTemp funzione del servizio Web DemoTemperatureService.

Annotazioni

Questo codice non funziona nelle applicazioni Web, perché ASP.NET non supporta l'oggetto My.WebServices .

Chiamare un servizio Web in modo asincrono

  1. Fare riferimento al servizio Web DemoTemperatureService all'indirizzo http://www.xmethods.net. L'indirizzo è

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  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
    

    Annotazioni

    Non è possibile utilizzare l'istruzione Handles per associare un gestore eventi agli My.WebServices eventi dell'oggetto.

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

    Private handlerAttached As Boolean = False
    
  4. Aggiungere un metodo per aggiungere il gestore eventi all'evento getTempCompleted , se necessario, e per chiamare il getTempAsync metodo :

    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 getTemp metodo Web in modo asincrono, chiamare il CallGetTempAsync metodo . Al termine del metodo Web, il relativo valore restituito viene passato al getTempCompletedHandler gestore eventi.

Vedere anche