Sdílet prostřednictvím


Postupy: Asynchronní volání webové služby (Visual Basic)

Tento příklad připojuje obsluhu k asynchronní události webové služby, aby mohl načíst výsledek asynchronního volání metody. Tento příklad použil webovou službu DemoTemperatureService na adrese http://www.xmethods.net.

Když ve svém projektu v integrovaném vývojovém prostředí (IDE) sady Visual Studio odkazujete na webovou službu, přidá se do objektu My.WebServices a integrované vývojové prostředí (IDE) vygeneruje třídu proxy klienta pro přístup k zadané webové službě.

Třída proxy umožňuje volat metody webové služby synchronně, kde vaše aplikace čeká na dokončení funkce. Kromě toho proxy vytváří další prvky, které pomáhají volat metodu asynchronně. Pro každou funkci webové služby NameOfWebServiceFunction vytvoří proxy subroutine NameOfWebServiceFunctionAsync , NameOfWebServiceFunctionCompleted událost a NameOfWebServiceFunctionCompletedEventArgs třídy. Tento příklad ukazuje, jak použít asynchronní členy pro přístup k funkci webové služby DemoTemperatureService.

Poznámka:

Tento kód nefunguje ve webových aplikacích, protože ASP.NET objekt nepodporuje My.WebServices .

Asynchronní volání webové služby

  1. Odkaz na DemoTemperatureService webovou službu na adrese http://www.xmethods.net. Adresa je

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. 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:

    Nelze použít příkaz Handles k přidružení obslužné rutiny události k událostem objektu My.WebServices.

  3. Přidejte pole ke sledování, zda byla obslužná rutina události přidána k události getTempCompleted:

    Private handlerAttached As Boolean = False
    
  4. Přidejte metodu, která v případě potřeby přidá obslužnou rutinu události do getTempCompleted události a zavolá metodu 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
    

    Chcete-li volat webovou metodu getTemp asynchronně, zavolejte metodu CallGetTempAsync . Po dokončení webové metody se její návratová hodnota předá obslužné rutině události getTempCompletedHandler.

Viz také