进度条使用backgroundworker

时间:2012-11-14 02:00:14

标签: c# multithreading progress-bar

关于如何实施进度条已经有很多问题,我相信我已经完成了所有这些问题,但我仍然不知道为什么我的进度条不起作用。

嗯,它似乎只在操作完成后才起作用,这当然不是我想要的。我希望进度条能够正常工作,因为主要操作正在做它的事情。

我的代码非常漫长而痛苦,因此我将简化它以使其尽可能基本。

private void button1_Click(object sender, EventArgs e)
{
  backgroundWorker1.RunWorkerAsync();
  //Main UI Operation
}

private void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
 for (int i = 1; i <= 100; i++)
  {
   // Wait 100 milliseconds.
   Thread.Sleep(100);
   // Report progress.
   backgroundWorker1.ReportProgress(i);     }
  }

private void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs        e)
  {
   progressBar1.Value = e.ProgressPercentage;
  }

就像我说的,我只看到进度条在我的主UI操作之后开始。

WorkerReportsProgress设置为True。 最小值和最大值分别为0和100。

我觉得这可能是对线程缺乏了解。

1 个答案:

答案 0 :(得分:1)

我测试了与您相同的代码并发现它有效。您是否忘记将WorkerReportesProress属性更改为True