当前位置:编程学习 > C#/ASP.NET >>

.NET Framework中使用XML Web Service(2)

异步调用 XML Web Service 分两个步骤。第一步,调用 Begin 方法以初始化 Web 方法调用。第二步,调用 End 方法以完成 XML Web Service 调用并检索 XML Web Service 的响应。
Begin 方法返回一个 System.Web.Services.Protocol.WebClientAsyncResult 对象,用于实现 System.IAsyncResult 接口。此对象提供关于待定异步调用的状态信息。通过将此对象传递给 End 方法,代理类可以标识要完成的请求,尤其是同时生成多个异步调用时。
有多种方法可以确定异步 XML Web Service 调用何时完成:
向 Begin 方法传递一个回调委托。回调委托将在 XML Web Service 调用完成后执行。
使用 IAsyncResult.AsyncWaitHandle 对象的 WaitHandle 方法之一强制应用程序等待。使用 WaitHandle 类的方法时,客户端也可以指定超时,超时过后,客户端将不再等待调用的 XML Web Service 的结果。
在主线程代码中轮询 IAsyncResult.IsCompleted 属性的值以查找值 true。如果此属性为 true,则调用 End 方法以检索 XML Web Service 的响应。
可直接调用 End 方法,而无需使用其他技术确定异步 XML Web Service 调用是否完成。此方法将中断调用线程的执行,直到异步调用完成为止。
最有效的方法是向 Begin 方法传递一个回调委托,因为回调函数在等待响应期间不会中断线程。XML Web Service 返回其响应时,回调委托将在新线程中执行。然后,在回调中调用 End 方法。
以下代码演示了如何创建异步 XML Web Service 调用;此代码显示了对 BeginGetItems 的调用,语法如下:BeginGetItems(System.AsyncCallback callback, object asyncState);
BeginGetItems 使用两个参数,第一个是 AsyncCallback 对象,它是通过在构造函数内传递 ServiceCallback 方法的地址创建的。第二个参数是对象类型的参数,可以传递任何可帮助您处理 XML Web Service 响应的对象。可以通过获取回调方法中 IAsyncResult 参数的 AsyncState 属性来访问此同一对象。在以下示例中,以这种方式传递的对象是 XML Web Service 代理对象,因此在执行回调委托时,可以调用 EndGetItems,如下面的 ServiceCallback 方法所示。private void button2_Click(object sender, System.EventArgs e)
补充:asp.net教程,基础入门 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,