异步调用ASP.NET的Web服务
时间:2010-09-14 来源:wangbin0307
异步调用Web Service就是避免客户端在调用耗时间的服务方法的时候出现假死状态。那么怎么异步调用呢?
微软的 System.ComponentModel.BackgroundWorker 类可以解决此类问题
(1)注册bw.DoWork += new DoWorkEventHandler(bw_DoWork); 在 private void bw_DoWork(object sender, DoWorkEventArgs e)方法中调用Web服务;
(2) 注册bw.RunWorkerCompleted +=new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);在private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)方法中针对调用后的结果做调用结束后的操作。
(3)bw.RunWorkerAsync();语句是开始异步调用。
(1)和(2)中的调用结果通过e.Result传递。在bw_RunWorkerCompleted中将调用服务返回的结果e.Result进行AS映射回所需的类型。例如:ServiceReference1.MClass m = new ServiceReference1.MClass();
m = e.Result as ServiceReference1.MClass;
还有一种方法是使用条件Web引用时候生成的客户端代理类,注意是添加Web引用,不是添加服务引用,在VS2008后续版本中添加Web引用可以点击添加服务引用的选项页面的“高级”按钮。如下图: