2012-01-19 5 views
0

После моего предыдущего поста 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++; 
     } 
    } 

Что я делаю неправильно?

Edit: я не могу сделать это показать ProgressBar минимизирован на панели задач, Althought я сделал изменения предложили ..

+0

В чем проблема? – Strillo

ответ

3

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

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

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

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

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.  
} 
+2

Я не хочу понижать ваш ответ, но, пожалуйста, исправьте 'while' часть, потому что это неправильно ... – Marco

+0

Спасибо за обмен ноу-книгами. Еще раз спасибо. Я надеюсь, что это будет полезно в будущем. – Pankaj

+0

хотя я сделал изменения в соответствии с инструкциями, у меня нет никаких изменений. – sparky