2012-09-21 104 views
0

updater.SearchByFunctionName在5-10秒後返回,我想在工作時增加進度條的值,但它永遠不會停止。C#線程不停止

我是新來的線程,所以也許這是非常基本的東西,我不知道。

  Thread t = new Thread(delegate() 
      { 
       updater.SearchByFunctionName(testsuiteBox.SelectedValue.ToString(), functionNameBox.Text); 
      }); 

      t.Start(); 

      progressBar.Value = 0; 


      while(t.IsAlive) 
      { 

       Thread.Sleep(1000); 

       if (progressBar.Value >= 200) 

        { 

         progressBar.Value = 0; 
        } 

        progressBar.Value += 20; 
      } 

回答

3

您阻止UI線程,那就是防止對進度的任何更新。

您應該使用Timer,將事件附加到Tick事件,並將代碼更新進度條。

這似乎也是你手動製作一個選框樣式的進度條。 ProgressBar有此內置支持您可以再補充:

myProgressBar.Style = ProgressBarStyle.Marquee; 

,你可以設置MarqueeAnimationSpeed到什麼是適當的。之後,你不需要爲此做任何事情。