我有一個程序在一個窗口內的其他線程中運行一系列方法,讓我們的用戶知道使用狀態欄發生了什麼。狀態欄更新位於設置狀態欄的主線程中,然後刷新GUI。有串聯的代碼幾個街區每個看起來像這樣:多線程C#程序中不可靠的GUI更新
Thread do1Thread = new Thread(Class.Method);
do1Thread.Start();
// inform user
this.status.Text = "Doing stuff 1...";
// update GUI
Utility.RefreshGUI();
// join thread
do1Thread.Join();
有時在狀態欄確實更新,但往往是直到最後的第一個狀態停留在它顯示最近的狀態。偶爾會堅持「準備就緒」。這是默認的。
請注意,兩個塊需要幾秒鐘,所以應該有時間來更新。此外,該程序使用GTK#爲GUI編寫的C#(Mono)。
如何確保GUI更新以反映更改?
上面的代碼塊是否發生在UI線程上?如果這樣做,UI線程上的'.Join()'是你的問題。 –
大家好,我患有嚴重的感冒,當我康復後,我會嘗試其中的一些建議。我感謝所有的幫助。 – Razick