[問題] 跨執行緒快速更新UI的問題

作者: james732 (好人超)   2015-05-19 17:41:42
目前用Winform寫一隻小程式
上面有個Label與DataGridView
首先會開啟一個新的執行緒,然後產生亂數值
(實際使用時,這個值會從serial port讀進來)
然後把這個值更新至Label與DataGridView上
並把DataGridView捲動到最下面
Github: https://github.com/james732/C_Shape_Test
main form的Code:
https://github.com/james732/C_Shape_Test/blob/master/AutoRollTest/Form1.cs
執行起來像這樣 http://i.imgur.com/cKpNgaN.png
如果資料進來的速度不快,那看起來都很OK
但是如果資料速度快,就會看到上面Label的值停止更新
DataGridView仍然可以自動捲動
(速度可在第65行的 if (!exitEvent.WaitOne(30)) 控制)
但如果取消DataGridView的捲動功能 (把Checkbox取消)
那麼Label的更新就不會卡住
我想請問,為什麼會這樣子呢?有沒有辦法讓我Label的值不會卡住?
(有漏掉沒關係,但不要停住,希望有在跳動就好)
感謝 :)
作者: Litfal (Litfal)   2015-05-19 19:17:00
未測先猜Refresh問題試試看在38行下面加一行 label1.Update();

Links booklink

Contact Us: admin [ a t ] ucptt.com