当前位置:  开发笔记 > 后端 > 正文

异步WebMethod调用后更新UI

如何解决《异步WebMethod调用后更新UI》经验,为你挑选了0个好方法。

问候!

我有一个包含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(ICollection servers)
    {
        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窗体?

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有