Delen via


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

  1. Verwijs naar de DemoTemperatureService-webservice op http://www.xmethods.net. Het adres is

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. 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 het My.WebServices object.

  3. Voeg een veld toe om bij te houden of de gebeurtenis-handler is toegevoegd aan de getTempCompleted gebeurtenis:

    Private handlerAttached As Boolean = False
    
  4. Voeg indien nodig een methode toe om de gebeurtenishandler toe te voegen aan de getTempCompleted gebeurtenis en om de getTempAsync 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 de CallGetTempAsync methode aan. Wanneer de webmethode is voltooid, wordt de retourwaarde doorgegeven aan de getTempCompletedHandler gebeurtenis-handler.

Zie ook