Freigeben über


Vorgehensweise: Asynchrones Aufrufen eines Webdiensts (Visual Basic)

In diesem Beispiel wird ein Handler an das asynchrone Handlerereignis eines Webdiensts angefügt, damit er das Ergebnis eines asynchronen Methodenaufrufs abrufen kann. In diesem Beispiel wurde der Webdienst DemoTemperatureService unter http://www.xmethods.net verwendet.

Wenn Sie auf einen Webdienst in Ihrem Projekt in der Integrierten Entwicklungsumgebung (IDE) von Visual Studio verweisen, wird er dem My.WebServices Objekt hinzugefügt, und die IDE generiert eine Clientproxyklasse für den Zugriff auf einen angegebenen Webdienst.

Mit der Proxyklasse können Sie die Webdienstmethoden synchron aufrufen, wobei die Anwendung auf den Abschluss der Funktion wartet. Darüber hinaus erstellt der Proxy zusätzliche Mitglieder, um die Methode im asynchronen Modus aufzurufen. Für jede Webdienstfunktion erstellt der Proxy eine NameOfWebServiceFunction-Unterroutine, ein Async und eine Completed. CompletedEventArgs Dieses Beispiel demonstriert, wie Sie die asynchronen Member für den Zugriff auf die getTemp-Funktion des Webdiensts DemoTemperatureService verwenden.

Hinweis

Dieser Code funktioniert in Webanwendungen nicht, da ASP.NET das My.WebServices Objekt nicht unterstützt.

asynchrones Aufrufen eines Webdiensts

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

    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
    

    Hinweis

    Sie können die Handles Anweisung nicht verwenden, um einen Ereignishandler den Ereignissen des My.WebServices Objekts zuzuordnen.

  3. Fügen Sie ein Feld hinzu, um nachzuverfolgen, ob der Ereignishandler dem getTempCompleted Ereignis hinzugefügt wurde:

    Private handlerAttached As Boolean = False
    
  4. Fügen Sie eine Methode hinzu, um den Ereignishandler zum getTempCompleted-Ereignis hinzufügen – sofern nötig – und zum Aufruf der getTempAsync-Methode:

    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
    

    Um die getTemp-Webmethode asynchron aufzurufen, verwenden Sie die Methode CallGetTempAsync. Nach Abschluss der Webmethode wird der Rückgabewert an den getTempCompletedHandler Ereignishandler übergeben.

Siehe auch