2011-03-11 54 views
1

而不是一個沉默的程序,或一個控制檯,我想做一個進度條來跟蹤我正在做的每個事件的狀態。C# - 如何正確使用進度條(GUI)

活動:

  1. 讀/解析文件
  2. 閱讀Excel文件
  3. 數據庫 查詢

等...

現在在我完成這些任務中的一個我遞增進度條以表明它已經完成,並且我寫入Da taGridTable表明狀態已從「計算...」更改爲「完成」。

爲了簡單說我有一個文件compute.cs和form.cs.我的靴子形狀了,我按 '執行' 運行compute.cs腳本,它通過中繼其狀態返回到形式:

compute.cs

form.SetStatus(EVENTID,eventStatus) ;

form.cs

委託無效SetMetricStatusDelegate(串度量,串狀態);

公共無效SetMetricStatus(字符串指標,串狀態){...}

最後,問題。我運行我的程序,每個任務大約需要三秒鐘才能完成,但進度條和表格未更新。所有事件完成後,進度條和表格正確更新。

在C#表單上使用進度條記錄進度的正確方法是什麼?

回答

8

當執行長時間運行的任務時,您的UI paint正在暫停。

你需要生成一個線程與UI分離到執行長任務

參見:BackgroundWorker Class

要注意的是從沒有創造他們會拋出異常,一個線程訪問UI控件。幸運的是,BackgroundWorker具有可在線程完成時訂閱的事件。

+0

很高興知道,謝謝。 – rvk 2011-03-11 02:58:18