异步调用Webservice的方法及实例代码如下:

主方法(调用Webservice的方法):

异步调用WebserviceArrayList al = new ArrayList();
异步调用Webservicelocalhost.TestService ts 
= new TestWebPro.localhost.TestService();//这是Webservice在本地的代理类
异步调用Webservice
System.Threading.ManualResetEvent mre = new System.Threading.ManualResetEvent(false);
异步调用Webserviceal.Add(ts);
异步调用Webserviceal.Add(mre);
异步调用Webservice   
异步调用Webservice
//执行异步调用,localhost.TestEnum.bus是自定义的枚举,用做调用方法的参数
异步调用Webservice
System.IAsyncResult ar = ts.BeginTestMethod(localhost.TestEnum.bus,new System.AsyncCallback(this.EndCall),al);
异步调用Webservice
异步调用Webservice
//异步调用Webservice.执行其它操作
异步调用Webservice

异步调用Webservicemre.WaitOne();
//等待调用完成
异步调用Webservice
异步调用Webservice
//异步调用Webservice.继续执行其它操作


回调方法EndCall(调用完成后执行的方法):

异步调用Webservicepublic void EndCall(System.IAsyncResult ar)
}


如果主方法和回调方法在同一个类就可以把ts和mre声明成私有全局变量,而不用通过IAsyncResult.AsyncState来传递到回调函数中。

相关文章: