Freigeben über


Gewusst wie: Asynchrones Aufrufen eines Webdiensts (Visual Basic)

In diesem Beispiel wird ein Handler an das Ereignis für den asynchronen Handler eines Webdiensts angefügt, sodass dieser das Ergebnis eines asynchronen Methodenaufrufs abrufen kann. In diesem Beispiel wird der DemoTemperatureService-Webdienst verwendet, der verfügbar ist unter http://www.xmethods. ein.

Wenn Sie in einem Projekt in der integrierten Entwicklungsumgebung von Visual Studio einen Verweis auf einen Webdienst erstellen, wird dieser dem My.WebServices-Objekt hinzugefügt, und die IDE generiert eine Proxyklasse für den Zugriff auf den angegebenen Webdienst.

Die Proxyklasse ermöglicht einen synchronen Aufruf der Webdienstmethoden. Bei diesem Verfahren wartet die Anwendung auf den Abschluss der Funktion. Darüber hinaus erstellt der Proxy zusätzliche Member für den asynchronen Aufruf der Methode. Für jede Webdienstfunktion (NameOfWebServiceFunction) erstellt der Proxy eine NameOfWebServiceFunctionAsync-Subroutine, ein NameOfWebServiceFunctionCompleted-Ereignis und eine NameOfWebServiceFunctionCompletedEventArgs-Klasse. Im Beispiel wird veranschaulicht, wie mithilfe der asynchronen Member auf die getTemp-Funktion des DemoTemperatureService-Webdiensts zugegriffen werden kann.

Tipp

Dieser Code kann in Webanwendungen nicht ausgeführt werden, da ASP.NET das My.WebServices-Objekt nicht unterstützt.

So rufen Sie einen Webdienst asynchron auf

  1. Verweisen Sie auf den DemoTemperatureService-Webdienst unter http://www.xmethods. ein. Die Adresse lautet wie folgt:

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. Fügen Sie einen Ereignishandler für das getTempCompleted-Ereignis hinzu:

    Private Sub getTempCompletedHandler(ByVal sender As Object, 
        ByVal e As net.xmethods.www.getTempCompletedEventArgs)
    
        MsgBox("Temperature: " & e.Result)
    End Sub
    

    Tipp

    Sie können die Handles-Anweisung nicht verwenden, um einem Ereignishandler die Ereignisse des My.WebServices-Objekts zuzuordnen.

  3. Fügen Sie ein Feld hinzu, mit dem verfolgt werden kann, ob der Ereignishandler dem getTempCompleted-Ereignis hinzugefügt wurde:

    Private handlerAttached As Boolean = False
    
  4. Fügen Sie bei Bedarf eine Methode hinzu, mit der der Ereignishandler dem getTempCompleted-Ereignis hinzugefügt und die getTempAsynch-Methode aufgerufen werden kann:

    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
    

    Rufen Sie zum asynchronen Aufruf der getTemp-Webmethode die CallGetTempAsync-Methode auf. Beim Abschluss der Webmethode wird deren Rückgabewert an den getTempCompletedHandler-Ereignishandler übergeben.

Siehe auch

Referenz

My.WebServices-Objekt (Visual Basic)

Konzepte

Zugreifen auf Anwendungswebdienste (Visual Basic)