2013-04-11 34 views
2

我有一個很長的計算,發生在按鈕單擊事件中,並且在每次迭代之後,我想要更新進度欄。我想知道是否有什麼辦法可以做到這一點,而無需使用一個後臺線程:有沒有辦法更新進度條而不使用後臺線程?

private void btnGetData_Click(object sender, RoutedEventArgs e) 
{ 
      progressBarGetData.Minimum = 0; 
      progressBarGetData.Maximum = recordCount; 
      progressBarGetData.Value = 0; 

      while(long iteration going on) 
      { 
       //do work 
       progressBarGetData.Value += 1; 
      } 
}//end button click 

的進度條不慢慢地在屏幕上遞增。我必須使用後臺工作人員嗎?

謝謝。

回答

6

這不是進度條的主要問題 - 這是你在UI線程中執行長時間運行的同步操作的事實。這將凍結整個UI,給用戶帶來可怕的體驗。

如果您可以將您的循環使用異步調用(例如,如果這只是長期運行的,因爲它在談論Web服務或數據庫),那麼這就是一個選擇 - 而且這是在.NET 4.5取得容易。

否則,你需要一個單獨的線程 - 要麼明確開始或使用BackgroundWorker

+2

好吧,我想我將不得不停止成爲娘娘腔並使用線程。感謝帖子! – KateMak 2013-04-11 05:55:08

相關問題