将winform转换为ASP.NET,保持进度显示信息

时间:2011-03-31 18:21:34

标签: c# asp.net silverlight progress

我需要将许多C#2.0 winforms应用程序转换为Web应用程序。这些进程封装在对象中。由于这些过程可能需要一些时间,因此我们通过将控件传递给对象的Process方法来更新进度,并在我们想要提供更新状态时使用Application.DoEvents()。例如:

    public string Process(label progressLabel)
    {
        int count=0;
        List<string> items = GetItemsToProcess();

        foreach(string item in items)
        {
            // code to process goes here
            if (count % 100 == 0)
            {
                progressLabel.Text = String.Format("Processed {0} of {1} items", count, items.Count);
                Application.DoEvents();
            }
        }
    }

我希望能够在网页中使用其中一个类,同时尽可能少地进行更改。我已经删除了对Application.DoEvents()的调用,并尝试将标签嵌入到UpdateProgress选项卡中,但在该过程完成之前,标签不会更新。

修改这些类型的方法的最佳方法是什么,以便我可以在Web应用程序(ASP.NET或Silverlight)中显示进度?

2 个答案:

答案 0 :(得分:0)

This article概述了一种将一些Web服务与AJAX Update面板结合使用以显示进程进度的方法。它也可能适合您的需求。

答案 1 :(得分:0)

由于您现在受到客户端/服务器关系的限制,您最好的选择可能是实现某种 AJAX 解决方案。对AJAX的解释可能超出了SO答案的范围,因此我建议您阅读一下,看看它如何适用于您当前的问题。

在asp.net应用程序中使用AJAX的两种流行方法:

出于多种原因,我更喜欢jQuery,但对于刚接触AJAX的人来说,内置ASP.NET的东西可能会更容易。

Google写了一篇很好的教程,介绍了AJAX是什么以及如何使用它。你可以在这里找到它:

这是一个特别适合在ASP.NET中使用AJAX的方法: