在任务栏中显示进度条我做错了什么?

时间:2012-01-19 11:14:17

标签: c# progress-bar taskbar

按照我之前的帖子iam尝试完成这项工作

我有以下代码(编辑):

 public partial class Form1 : Form
 {
   ...
   private TaskDialog Taskbar = new TaskDialog();
 }

 private void timer1_Tick(object sender, EventArgs e)
    {
        Taskbar.ProgressBar.Value = progressBar1.Value;
    }

 private void button2_Click(object sender, EventArgs e)
    {
      bgWorker.RunWorkerAsync();
    }

 bgWorker_dowork()
 {
   timer1.Enabled = true;
      timer1.Start();

      while(progressBar1.Value < progressBar1.Maximum)
      {
        progressBar1.Value++;
      } 
  }

我做错了什么?

编辑:我不能让它在任务栏上最小化时显示进度条,尽管我做了更改建议..

2 个答案:

答案 0 :(得分:3)

那是因为你阻止了你的GUI线程

  while(true)
  {
    progressBar1.Value++;
  } 

这将导致它锁定并阻止它更新UI。

永远不要在你的主线程上运行这样的循环,使用BackGroundWorker这样的东西。

答案 1 :(得分:0)

确保进度条的值不超过最大值。

ProgressBar.Maximum Property

ProgressBar.Minimum Property

 while (progressBar1.Value < progressBar1.Maximum) 
 { 
       progressBar1.Value++; 
       Application.DoEvents();//This will update the UI paintings 
                              //which is not happening prior to this code.     
 }