C# 将winform转换为ASP.NET,保留进度显示信息
我有许多C#2.0 winforms应用程序需要转换为web应用程序。进程被封装在对象中。由于进程可能需要一些时间,我们通过将控件传递给对象的进程方法来更新进度,并在需要提供更新状态时使用Application.DoEvents()。例如:C# 将winform转换为ASP.NET,保留进度显示信息,c#,asp.net,silverlight,progress,C#,Asp.net,Silverlight,Progress,我有许多C#2.0 winforms应用程序需要转换为web应用程序。进程被封装在对象中。由于进程可能需要一些时间,我们通过将控件传递给对象的进程方法来更新进度,并在需要提供更新状态时使用Application.DoEvents()。例如: public string Process(label progressLabel) { int count=0; List<string> items = GetItemsToProcess();
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();
}
}
}
公共字符串进程(label progressLabel)
{
整数计数=0;
List items=GetItemsToProcess();
foreach(项中的字符串项)
{
//要处理的代码在这里
如果(计数%100==0)
{
progressLabel.Text=String.Format(“已处理{1}项中的{0}”,计数,项数);
Application.DoEvents();
}
}
}
我希望能够在网页中使用这些类中的一个,同时进行尽可能少的更改。我已经删除了对Application.DoEvents()的调用,并尝试将标签嵌入到UpdateProgress选项卡中,但直到流程完成,标签才会更新
修改这些类型的方法以便在web应用程序(ASP.NET或Silverlight)中显示进度的最佳方法是什么?概述了一种结合使用两个web服务和AJAX更新面板来显示流程进度的方法。它可能也适合您的需要。由于您现在受到客户机/服务器关系的限制,您最好的选择可能是实现某种AJAX解决方案。对AJAX的解释可能超出了SO答案的范围,因此我建议您阅读一下AJAX,看看它如何应用于您当前的问题 在asp.net应用程序中使用AJAX的两种常用方法: