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ę NameOfWebServiceFunctionCompletedEventArgs
Completed
. 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
Odwołaj się do usługi internetowej DemoTemperatureService pod adresem
http://www.xmethods.net
. Adres tohttp://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
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 zdarzeniamiMy.WebServices
obiektu.Dodaj pole, aby śledzić, czy program obsługi zdarzeń został dodany do
getTempCompleted
zdarzenia:Private handlerAttached As Boolean = False
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
.