问候!
我有一个包含WebMethod的WebService,它可以完成一些工作并返回一个布尔值.它所做的工作可能需要或可能不需要一些时间,所以我想异步调用它.
[WebService(Namespace = "http://tempuri.com/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] public class MyWebSvc : System.Web.Services.WebService { [WebMethod] public bool DoWork() { bool succ = false; try { // do some work, which might take a while } catch (Exception ex) { // handle succ = false; } return succ; } }
此WebService存在于Web场中的每个服务器上.因此,要在每个服务器上调用DoWork()方法,我有一个类库,基于服务器URL列表:
static public class WebSvcsMgr { static public void DoAllWork(ICollectionservers) { MyWebSvc myWebSvc = new MyWebSvc(); foreach (string svr_url in servers) { myWebSvc.Url = svr_url; myWebSvc.DoWork(); } } }
最后,这是在asp:Button点击事件中从Web界面调用,如下所示:
WebSvcsMgr.DoAllWork(server_list);
对于Web窗体调用的静态DoAllWork()方法,我计划通过IAsyncResult使其成为异步调用.但是,我想在返回结果时报告服务器场中每个服务器的DoWork()WebMethod成功/失败.与UpdatePanel结合使用的最佳方法是什么?一个GridView?标签?静态帮助器类如何将其返回到Web窗体?