Postupy: Asynchronní volání webové služby (Visual Basic)
V tomto příkladu dojde k připojení obslužné rutiny na asynchronní obslužnou rutinu události webové služby tak, aby bylo možné načíst asynchronní volání metody. Tento příklad používá webovou službu DemoTemperatureServic na protokol http://www.xmethods. net.
V případě, že se odkazujete na webovou službu ve vašem projektu v Integrované vývojové prostředí (IDE) Visual Studio, je přidána do objektu My.WebServices a rozhraní IDE nageneruje klientskou proxy třídu pro přístup k zadané webové službě.
Proxy třída umožňuje volat metody webové služby synchronně, když aplikace čeká na dokončení funkce. Kromě toho proxy vytvoří další členy k usnadnění volání metod asynchronně. Pro každou funkci webové služby, NameOfWebServiceFunction vytvoří proxy podprogram NameOfWebServiceFunctionAsync, událost NameOfWebServiceFunctionCompleted a třídu NameOfWebServiceFunctionCompletedEventArgs. Tento příklad demonstruje použití asynchronních členů pro přístup k funkci getTemp webové služby DemoTemperatureService.
Poznámka
Tento kód není funkční ve webových aplikacích, protože technologie ASP.NET nepodporuje objekt My.WebServices.
Chcete-li volat webovou službu asynchronně
Odkaz na webovou službu DemoTemperatureService na adrese http://www.xmethods. net. Adresa je
http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
Přidejte obslužnou rutinu pro událost getTempCompleted.
Private Sub getTempCompletedHandler(ByVal sender As Object, ByVal e As net.xmethods.www.getTempCompletedEventArgs) MsgBox("Temperature: " & e.Result) End Sub
Poznámka
Nemůžete použít příkaz Handles k přidružení obslužné rutiny události s objektem události My.WebServices.
Přidejte pole ke sledování zda byla obslužná rutina přidána k události getTempCompleted:
Private handlerAttached As Boolean = False
Přidejte metodu k přidání obslužné rutina k události getTempCompleted pokud je to nutné a k volání metody getTempAsynch:
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
Chcete-li volat webovou metodu getTemp asynchronně, volejte metodu CallGetTempAsync. Po dokončení metody webové služby, je její vrácená hodnota předána obslužnou rutinou getTempCompletedHandler.