我需要将许多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)中显示进度?
答案 0 :(得分:0)
This article概述了一种将一些Web服务与AJAX Update面板结合使用以显示进程进度的方法。它也可能适合您的需求。
答案 1 :(得分:0)
由于您现在受到客户端/服务器关系的限制,您最好的选择可能是实现某种 AJAX 解决方案。对AJAX的解释可能超出了SO答案的范围,因此我建议您阅读一下,看看它如何适用于您当前的问题。
在asp.net应用程序中使用AJAX的两种流行方法:
出于多种原因,我更喜欢jQuery,但对于刚接触AJAX的人来说,内置ASP.NET的东西可能会更容易。
Google写了一篇很好的教程,介绍了AJAX是什么以及如何使用它。你可以在这里找到它:
这是一个特别适合在ASP.NET中使用AJAX的方法: