當我在一臺快速計算機上運行程序時,ProgressBar
和Label
(即寫入進度)得到完美更新。當我在弱電腦(如PIV或舊c2d)上運行它時,ProgressBar
和窗體保持凍結狀態(但程序一直運行直到完成)。當在弱電腦上運行程序時ProgressBar不更新
我該如何解決?有背景的工作者?
當我在一臺快速計算機上運行程序時,ProgressBar
和Label
(即寫入進度)得到完美更新。當我在弱電腦(如PIV或舊c2d)上運行它時,ProgressBar
和窗體保持凍結狀態(但程序一直運行直到完成)。當在弱電腦上運行程序時ProgressBar不更新
我該如何解決?有背景的工作者?
是的,你應該把你的處理放到後臺線程中。使用後臺工作人員是一個好主意,因爲您可以簡單地更新其ProgressChanged
事件中的控件。
如果你正在使用進度條,我猜測任何任務肯定足夠長,以保證背景/工作線程。有很多選項(BackgroundWorker,旋轉你自己的線程等)。 BackgroundWorker
可能是最簡單的。
有一些方法允許在長時間運行的任務中對UI進行維護。
1-在另一個步驟/在一個任意時間方法調用中運行任務,然後使用this.Invoke更改進度條。 2-通過調用WinForms中的Application.DoEvents()來強制UI在任務中的某些點刷新。
不建議使用Application.DoEvents()。 – 2011-05-26 15:01:17
您使用的是WPF還是Windows窗體? – chocojosh 2011-05-26 14:45:04