Gewusst wie: Asynchrones Aufrufen eines Webdiensts (Visual Basic)How to: Call a Web Service Asynchronously (Visual Basic)

Dieses Beispiel hängt einen Handler an das asynchrone Handlerereignis eines Webdiensts an, sodass dieses das Ergebnis eines asynchronen Methodenaufrufs abrufen kann.This example attaches a handler to a Web service's asynchronous handler event, so that it can retrieve the result of an asynchronous method call. Dieses Beispiel verwendet den Webdienst DemoTemperatureService auf http://www.xmethods.net.This example used the DemoTemperatureService Web service at http://www.xmethods.net.

Wenn Sie im Projekt in der integrierten Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual StudioVisual Studio auf einen Webdienst verweisen, wird dieser dem My.WebServices-Objekt hinzugefügt und die IDE generiert eine Client-Proxyklasse für den Zugriff auf einen festgelegten Webdienst.When you reference a Web service in your project in the Visual StudioVisual Studio Integrated Development Environment (IDE), it is added to the My.WebServices object, and the IDE generates a client proxy class to access a specified Web service

Mit der Proxyklasse ist es möglich, die Webdienstmethoden synchron aufzurufen, während die Anwendung darauf wartet, dass die Funktion abgeschlossen wird.The proxy class allows you to call the Web service methods synchronously, where your application waits for the function to complete. Außerdem erstellt das Proxy weitere Member zur asynchronen Unterstütztung der Methode.In addition, the proxy creates additional members to help call the method asynchronously. Für jede Webdienstfunktion, NameOfWebServiceFunction, erstellt das Proxy eine NameOfWebServiceFunctionAsync-Unterroutine, ein NameOfWebServiceFunctionCompleted-Ereignis und eine NameOfWebServiceFunctionCompletedEventArgs-Klasse.For each Web service function, NameOfWebServiceFunction, the proxy creates a NameOfWebServiceFunctionAsync subroutine, a NameOfWebServiceFunctionCompleted event, and a NameOfWebServiceFunctionCompletedEventArgs class. Dieses Beispiel demonstriert, wie Sie die asynchronen Member für den Zugriff auf die getTemp-Funktion des Webdiensts DemoTemperatureService verwenden.This example demonstrates how to use the asynchronous members to access the getTemp function of the DemoTemperatureService Web service.

Hinweis

Dieser Code funktioniert nicht in Webanwendungen, denn ASP.NET unterstützt nicht das Objekt My.WebServices.This code does not work in Web applications, because ASP.NET does not support the My.WebServices object.

Asynchroner Aufruf eines WebdienstsTo call a Web service asynchronously

  1. Referenzieren Sie den Webdienst DemoTemperatureService auf http://www.xmethods.net.Reference the DemoTemperatureService Web service at http://www.xmethods.net. Die Adresse lautetThe address is

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

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

    Hinweis

    Die Anweisung Handles lässt sich nicht für das Zuordnen eines Ereignishandlers zu den Ereignissen des My.WebServices-Objekts verwenden.You cannot use the Handles statement to associate an event handler with the My.WebServices object's events.

  3. Fügen Sie ein Feld hinzu um nachverfolgen zu können, ob der Ereignishandler dem getTempCompleted-Ereignis hinzugefügt wurde:Add a field to track if the event handler has been added to the getTempCompleted event:

    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 getTempAsynch-Methode:Add a method to add the event handler to the getTempCompleted event, if necessary, and to call the getTempAsynch method:

    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  
    

    Für einen asynchronen Aufruf der getTemp-Webmethode rufen Sie die CallGetTempAsync-Methode auf.To call the getTemp Web method asynchronously, call the CallGetTempAsync method. Wenn die Webmethode fertig ist, wird ihr Rückgabewert an den getTempCompletedHandler-Ereignishandler übergeben.When the Web method finishes, its return value is passed to the getTempCompletedHandler event handler.

Siehe auchSee Also

Zugreifen auf AnwendungswebdiensteAccessing Application Web Services
My.WebServices-ObjektMy.WebServices Object