Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
Opmerking
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.wsdlVoeg een gebeurtenis-handler toe voor de
getTempCompletedgebeurtenis:Private Sub getTempCompletedHandler(ByVal sender As Object, ByVal e As net.xmethods.www.getTempCompletedEventArgs) MsgBox("Temperature: " & e.Result) End SubOpmerking
U kunt de
Handlesinstructie niet gebruiken om een gebeurtenishandler te koppelen aan de gebeurtenissen van hetMy.WebServicesobject.Voeg een veld toe om bij te houden of de gebeurtenis-handler is toegevoegd aan de
getTempCompletedgebeurtenis:Private handlerAttached As Boolean = FalseVoeg indien nodig een methode toe om de gebeurtenishandler toe te voegen aan de
getTempCompletedgebeurtenis en om degetTempAsyncmethode 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 SubAls u de
getTempwebmethode asynchroon wilt aanroepen, roept u deCallGetTempAsyncmethode aan. Wanneer de webmethode is voltooid, wordt de retourwaarde doorgegeven aan degetTempCompletedHandlergebeurtenis-handler.