我知道這個問題以前曾被問過100次,但是我讀的所有答案都不適合我。所以,我會試試我的運氣,並再次問。ProgressBar從另一個線程更新
我有一個SliderBar
調用ValueChanged
事件的方法。 在這個方法中,我做了一些需要時間的東西,我希望在這段時間內用戶會看到一個「工作」ProgressBar
(IsIndeterminate=true
)。
不幸的是,我沒有成功讓ProgressBar
開始工作(在UI中),直到所有的方法循環完成。 我試過線程,BackgroundWorker
和async
任務,但沒有成功..
我做錯了什麼?
這是方法:
private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e){
WorkingBar.IsIndeterminate = true; //change the progressBar
SqlAThread = new Thread(SqlAStart);
SqlAThread.Start();
}
螺紋:
private void SqlAStart()
{
... //do some stuff
}
您的doWork方法中的調度程序語法就是您想要使用的,您希望將UI代碼放在那裏以便將您想要執行的操作推送到UI線程上,此刻您似乎在此處所做的只是更改進度欄的屬性,還可以使用此語法更新進度欄。 – JMK
@JMK這個proparty是我想改變的,當這個特性是「真實的」時,progressBar就會處於「工作」模式(我認爲......)。 實際上,它的工作原理,但只有當所有的循環完成.. =/ – Yaron