Porady: asynchroniczne wywoływanie usługi sieci Web (Visual Basic)

W tym przykładzie program obsługi jest dołączany do zdarzenia asynchronicznego programu obsługi usługi sieci Web, dzięki czemu może pobrać wynik wywołania metody asynchronicznej. W tym przykładzie użyto usługi internetowej DemoTemperatureService pod adresem http://www.xmethods.net.

W przypadku odwoływania się do usługi sieci Web w projekcie w zintegrowanym środowisku projektowym programu Visual Studio (IDE) jest dodawany do My.WebServices obiektu, a środowisko IDE generuje klasę serwera proxy klienta w celu uzyskania dostępu do określonej usługi sieci Web

Klasa serwera proxy umożliwia synchroniczne wywoływanie metod usługi sieci Web, gdzie aplikacja czeka na ukończenie funkcji. Ponadto serwer proxy tworzy dodatkowe elementy członkowskie, aby pomóc wywołać metodę asynchronicznie. Dla każdej funkcji usługi sieci Web NameOfWebServiceFunction serwer proxy tworzy podroutine NameOfWebServiceFunctionAsync, zdarzenie NameOfWebServiceFunction i klasę NameOfWebServiceFunctionCompletedEventArgsCompleted. W tym przykładzie pokazano, jak używać członków asynchronicznych do uzyskiwania dostępu getTemp do funkcji usługi internetowej DemoTemperatureService.

Uwaga

Ten kod nie działa w aplikacjach internetowych, ponieważ ASP.NET nie obsługuje My.WebServices obiektu.

Asynchronicznie wywoływanie usługi sieci Web

  1. Odwołaj się do usługi internetowej DemoTemperatureService pod adresem http://www.xmethods.net. Adres to

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. Dodaj procedurę obsługi zdarzeń dla getTempCompleted zdarzenia:

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

    Uwaga

    Nie można użyć instrukcji Handles , aby skojarzyć program obsługi zdarzeń z zdarzeniami My.WebServices obiektu.

  3. Dodaj pole, aby śledzić, czy program obsługi zdarzeń został dodany do getTempCompleted zdarzenia:

    Private handlerAttached As Boolean = False
    
  4. Dodaj metodę , aby dodać procedurę obsługi zdarzeń do getTempCompleted zdarzenia, jeśli to konieczne, i wywołać metodę getTempAsync :

    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
    

    Aby wywołać metodę getTemp sieci Web asynchronicznie, wywołaj metodę CallGetTempAsync . Po zakończeniu działania metody sieci Web jej wartość zwracana jest przekazywana do procedury obsługi zdarzeń getTempCompletedHandler .

Zobacz też