[問題] 跨執行緒快速更新UI的問題
目前用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的值不會卡住?
(有漏掉沒關係,但不要停住,希望有在跳動就好)
感謝 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.136.30.83
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1432028506.A.9ED.html
推
05/19 19:17, , 1F
05/19 19:17, 1F
推
05/19 19:21, , 2F
05/19 19:21, 2F
好像成功了耶,感謝!!!!
現在速度再調高也不會給我裝死了
非常非常謝謝你!!!!
※ 編輯: james732 (223.136.30.83), 05/19/2015 20:07:32
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):