Показать индикатор на панели задач, что я делаю не так? - PullRequest
0 голосов
/ 19 января 2012

После моего предыдущего поста я пытаюсь сделать эту работу

У меня есть следующий код (отредактированный):

 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 ]

3 голосов
/ 19 января 2012

Это потому, что вы блокируете свой поток GUI

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

Это приведет к его блокировке и не позволит обновлять интерфейс.

Никогда не запускайте такие циклы в основном потокеиспользуйте BackGroundWorker для подобных вещей.

0 голосов
/ 19 января 2012

Убедитесь, что значение индикатора выполнения не должно превышать максимальное значение.

Свойство ProgressBar.Maximum

Свойство ProgressBar.Minimum

 while (progressBar1.Value < progressBar1.Maximum) 
 { 
       progressBar1.Value++; 
       Application.DoEvents();//This will update the UI paintings 
                              //which is not happening prior to this code.     
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...