Udostępnij za pomocą


Porady: asynchroniczne wywoływanie usługi internetowej (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.

Gdy odwołujesz się do usługi sieci Web w swoim projekcie w zintegrowanym środowisku programistycznym Visual Studio (IDE), odniesienie do usługi sieci Web zostaje dodane do obiektu My.WebServices, a IDE generuje klasę klienta proxy 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 dodatkowych członków w celu asynchronicznego wywołania metody. Dla każdej funkcji usługi sieci Web NameOfWebServiceFunction serwer proxy tworzy podprogram NameOfWebServiceFunctionAsync, zdarzenie NameOfWebServiceFunctionCompleted oraz klasę NameOfWebServiceFunctionCompletedEventArgs. W tym przykładzie pokazano, jak używać elementów asynchronicznych, aby uzyskać dostęp do funkcji getTemp w usłudze internetowej DemoTemperatureService.

Uwaga / Notatka

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. Skorzystaj z 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 zdarzenia getTempCompleted:

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

    Uwaga / Notatka

    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 także