此示例将处理程序附加到 Web 服务的异步处理程序事件,以便它可以检索异步方法调用的结果。 此示例使用了 DemoTemperatureService Web 服务。http://www.xmethods.net
在 Visual Studio 集成开发环境(IDE)中引用项目中的 Web 服务时,它会添加到 My.WebServices
对象中,并且 IDE 会生成客户端代理类来访问指定的 Web 服务
代理类允许你同步调用 Web 服务方法,其中应用程序等待函数完成。 此外,代理还会创建其他成员来帮助异步调用该方法。 对于每个 Web 服务函数 NameOfWebServiceFunction,代理将创建 NameOfWebServiceFunction 子例程、Async
事件和 Completed
CompletedEventArgs
类。 此示例演示如何使用异步成员访问 getTemp
DemoTemperatureService Web 服务的函数。
注释
此代码在 Web 应用程序中不起作用,因为 ASP.NET 不支持该 My.WebServices
对象。
异步调用 Web 服务
在
http://www.xmethods.net
处引用 DemoTemperatureService Web 服务。 地址为http://www.xmethods.net/sd/2001/DemoTemperatureService.wsdl
为
getTempCompleted
事件添加事件处理程序:Private Sub getTempCompletedHandler(ByVal sender As Object, ByVal e As net.xmethods.www.getTempCompletedEventArgs) MsgBox("Temperature: " & e.Result) End Sub
注释
不能使用
Handles
语句将事件处理程序与My.WebServices
对象的事件相关联。添加字段以跟踪是否已将事件处理程序添加到
getTempCompleted
事件:Private handlerAttached As Boolean = False
添加一个方法,以便根据需要将事件处理程序添加到
getTempCompleted
事件,并调用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
若要异步调用
getTemp
Web 方法,请调用该方法CallGetTempAsync
。 Web 方法完成后,其返回值将传递给getTempCompletedHandler
事件处理程序。