作者james732 (好人超)
看板C_Sharp
标题[问题] 跨执行绪快速更新UI的问题
时间Tue May 19 17:41:42 2015
目前用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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1432028506.A.9ED.html
1F:推 Litfal: 未测先猜Refresh问题 05/19 19:17
2F:推 Litfal: 试试看在38行下面加一行 label1.Update(); 05/19 19:21
好像成功了耶,感谢!!!!
现在速度再调高也不会给我装死了
非常非常谢谢你!!!!
※ 编辑: james732 (223.136.30.83), 05/19/2015 20:07:32