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

看板C_Sharp作者 (好人超)時間9年前 (2015/05/19 17:41), 9年前編輯推噓2(200)
留言2則, 1人參與, 最新討論串1/2 (看更多)
目前用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
未測先猜Refresh問題
05/19 19:17, 1F

05/19 19:21, , 2F
試試看在38行下面加一行 label1.Update();
05/19 19:21, 2F
好像成功了耶,感謝!!!! 現在速度再調高也不會給我裝死了 非常非常謝謝你!!!! ※ 編輯: james732 (223.136.30.83), 05/19/2015 20:07:32
文章代碼(AID): #1LMmLQdj (C_Sharp)
文章代碼(AID): #1LMmLQdj (C_Sharp)