我想添加多个进度条到一个WinForm中,以便监视三个嵌套循环中可能长的进程。我推测,我应该能够只使用一个后台工作线程,是下面的实现可以接受的:一个后台工作线程和多个进度条
这里是我所在班级的工作正在做:
class Class1
{
public static void UpdatePB(BackgroundWorker worker)
{
for (int i = 1; i <= 10; i++)
{
for (int ii = 1; ii <= 10; ii++)
{
for (int iii = 1; iii <= 10; iii++)
{
Thread.Sleep(10);
worker.ReportProgress(iii, "PB3");
}
Thread.Sleep(10);
worker.ReportProgress(ii, "PB2");
}
Thread.Sleep(10);
worker.ReportProgress(i, "PB1");
}
}
,这里是BackgroundWorker的ProgressChanged事件:
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
// Change the value of the ProgressBar to the BackgroundWorker progress.
switch (e.UserState.ToString())
{
case "PB1":
progressBar1.Value = e.ProgressPercentage;
this.label1.Text = e.ProgressPercentage.ToString();
break;
case "PB2":
progressBar2.Value = e.ProgressPercentage;
this.label2.Text = e.ProgressPercentage.ToString();
break;
case "PB3":
progressBar3.Value = e.ProgressPercentage;
this.label3.Text = e.ProgressPercentage.ToString();
break;
}
Application.DoEvents();
}
当你运行它时会发生什么?结果是你想要的吗? (我不这么认为)。请更具体地说明你想达到的目标。 – usr 2012-07-28 13:41:58
是的,它工作正常,但我想确保这是一个适当和标准的做法。基本上,我想监视一个长时间运行的方法中的三个不同步骤,我想调用另一个线程上的Progress Bar更新,以便更新更频繁。 – 2012-07-28 13:44:01