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
Verweisen Sie auf den DemoTemperatureService-Webdienst unter http://www.xmethods. ein. Die Adresse lautet wie folgt:
http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
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.
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
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)