我想添加多個進度條到一個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