Procedure: Een webservice asynchroon aanroepen (Visual Basic)
In dit voorbeeld wordt een handler gekoppeld aan de asynchrone handler-gebeurtenis van een webservice, zodat het resultaat van een asynchrone methodeaanroep kan worden opgehaald. In dit voorbeeld is de DemoTemperatureService-webservice gebruikt bij http://www.xmethods.net
.
Wanneer u naar een webservice in uw project in de Visual Studio Integrated Development Environment (IDE) verwijst, wordt deze toegevoegd aan het My.WebServices
object en genereert de IDE een clientproxyklasse voor toegang tot een opgegeven webservice
Met de proxyklasse kunt u de webservicemethoden synchroon aanroepen, waarbij uw toepassing wacht totdat de functie is voltooid. Daarnaast maakt de proxy extra leden om de methode asynchroon aan te roepen. Voor elke webservicefunctie maakt de proxy een subroutine NameOfWebServiceFunctionAsync
, een NameOfWebServiceFunction-gebeurtenisCompleted
en een nameOfWebServiceFunction-klasseCompletedEventArgs
. In dit voorbeeld ziet u hoe u de asynchrone leden gebruikt voor toegang tot de functie van de getTemp
DemoTemperatureService-webservice.
Notitie
Deze code werkt niet in webtoepassingen, omdat ASP.NET het My.WebServices
object niet ondersteunt.
Een webservice asynchroon aanroepen
Verwijs naar de DemoTemperatureService-webservice op
http://www.xmethods.net
. Het adres ishttp://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
Voeg een gebeurtenis-handler toe voor de
getTempCompleted
gebeurtenis:Private Sub getTempCompletedHandler(ByVal sender As Object, ByVal e As net.xmethods.www.getTempCompletedEventArgs) MsgBox("Temperature: " & e.Result) End Sub
Notitie
U kunt de
Handles
instructie niet gebruiken om een gebeurtenishandler te koppelen aan de gebeurtenissen van hetMy.WebServices
object.Voeg een veld toe om bij te houden of de gebeurtenis-handler is toegevoegd aan de
getTempCompleted
gebeurtenis:Private handlerAttached As Boolean = False
Voeg indien nodig een methode toe om de gebeurtenishandler toe te voegen aan de
getTempCompleted
gebeurtenis en om degetTempAsync
methode aan te roepen: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
Als u de
getTemp
webmethode asynchroon wilt aanroepen, roept u deCallGetTempAsync
methode aan. Wanneer de webmethode is voltooid, wordt de retourwaarde doorgegeven aan degetTempCompletedHandler
gebeurtenis-handler.