我有這個小問題,但不能輕易解決。目前,我的程序有2個按鈕,一個「開始」和一個「取消」。當用戶點擊開始時,按鈕應該立即執行:在運行BackgroundWorker之前更新界面
StartButton.IsEnabled = false;
CancelButton.IsEnabled = true;
但是,只有當BackgroundWorker完成後(按下按鈕後將運行的所有代碼)纔會發生這種情況,因爲UI總是隨時更新。我無法將這些命令添加到背景工作器的「ProgressChanged」或「Completed」事件中。這些事件可能需要10分鐘才能完成。
一個簡單的方法是將這些命令添加到「ProgressChanged」部分,並在最後「完成」中再次更改其狀態。但我想避免這種情況,因爲按鈕應始終顯示其真實狀態,而不是幾次「ProgressChanged」事件之後。當然,總是有方法,比如不使用按鈕的UI屬性。
這是否有任何簡短的解決方案?
無法將Button.Property更改添加到ClickEvent。這是這方面的主要問題。我可以很容易地使用BGW的「Completed」部分來改變Button的背部以匹配起始狀態。問題是讓他們在所有事件和BGW之前立即設置。
看來,最簡單的方法是將屬性更改添加到「ProgressChanged」事件的開始。但是,這並不總是最好的方法,因爲有時在觸發該方法之前可能需要很長時間,這取決於代碼提供進度信息的頻率。 – W0lfw00ds