Megosztás a következőn keresztül:


Útmutató: Webszolgáltatás aszinkron meghívása (Visual Basic)

Ez a példa csatol egy kezelőt egy webszolgáltatás aszinkron kezelőeseményéhez, hogy lekérhesse az aszinkron metódushívás eredményét. Ez a példa a DemoTemperatureService webszolgáltatást használta a következő helyen http://www.xmethods.net: .

Amikor a Visual Studio Integrált fejlesztési környezetben (IDE) hivatkozik egy webszolgáltatásra a projektben, az hozzá lesz adva az My.WebServices objektumhoz, és az IDE létrehoz egy ügyfélproxy-osztályt egy adott webszolgáltatás eléréséhez

A proxyosztály lehetővé teszi a webszolgáltatás-metódusok szinkron meghívását, ahol az alkalmazás megvárja a függvény befejezését. A proxy emellett további tagokat is létrehoz a metódus aszinkron meghívásához. A proxy minden webszolgáltatás-függvényhez ( NameOfWebServiceFunction) létrehoz egy NameOfWebServiceFunctionAsync alrutint, egy NameOfWebServiceFunctionCompleted eseményt és egy NameOfWebServiceFunction osztálytCompletedEventArgs . Ez a példa bemutatja, hogyan használhatja az aszinkron tagokat a getTemp DemoTemperatureService webszolgáltatás funkciójának eléréséhez.

Megjegyzés:

Ez a kód nem működik webalkalmazásokban, mert ASP.NET nem támogatja az My.WebServices objektumot.

Webszolgáltatás aszinkron meghívása

  1. Hivatkozzon a DemoTemperatureService webszolgáltatásra a következő címen http://www.xmethods.net: . A cím a következő:

    http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
    
  2. Adjon hozzá egy eseménykezelőt a getTempCompleted eseményhez:

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

    Megjegyzés:

    A Handles utasítást nem használhatja arra, hogy eseménykezelőt társítson az My.WebServices objektum eseményeihez.

  3. Adjon hozzá egy mezőt, amely nyomon követi, hogy az eseménykezelő hozzá lett-e adva az getTempCompleted eseményhez:

    Private handlerAttached As Boolean = False
    
  4. Adjon hozzá egy metódust, amely szükség esetén hozzáadja az eseménykezelőt az getTempCompleted eseményhez, és meghívja a metódust 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
    

    A getTemp webes metódus aszinkron módon történő meghívásához hívja meg a CallGetTempAsync metódust. Amikor a webmetódus befejeződik, a rendszer átadja a visszatérési értékét az getTempCompletedHandler eseménykezelőnek.

Lásd még