c#datagridview控件刷新速率过慢

qq_39258463 2019-01-02 01:50:55
使用的光纤陀螺为300Hz,理论上应该每秒发出300个数据,可是使用c#datagridview控件只能每秒接收到约150个数据,这是什么原因呢,请大佬帮忙解答一下?
...全文
1106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Chasmれ 2019-01-02
  • 打赏
  • 举报
回复

刚试了,一百万条数据也就半秒,不知道你那150个数据怎么来的
xian_wwq 2019-01-02
  • 打赏
  • 举报
回复
可以把问题分解为两部分,
1.先不要在界面显示,只接收数据,判定接收环节是否有问题。
2.如果接收没有问题,刷新的时候可以采用控件的虚拟模式。
之前测试过,每秒刷新上万笔数据是有保障的。
平底锅锅锅 2019-01-02
  • 打赏
  • 举报
回复
看收到数据用到多少时间,这个控件刷新要时间的,特别是数据多的时候。可以分页显示。
qq_39258463 2019-01-02
  • 打赏
  • 举报
回复
引用 1 楼 以专业开发人员为伍 的回复:
datagridview 本身不可能去接收什么数据。

你应该把你们的“接收”功能独立出来,单独测试它接收数据的能力。例如假设一次收到一组数据,能不能报告接收到一组数据?是真正用接收数据事件触发机制的,还是坑爹的反复查询机制的?

然后考虑你们的 datagridview 之类的控件操作层,是使用异步 BeginInvoke 还是使用 同步阻塞 Invoke的?是对显示分组显示(例如300毫秒为一组集中显示数据还是每一次有数据都显示)?间隔过短的没有必要显示的数据有没有抽稀处理?等等。
哦哦,我是用serialport接收的,然后在datagridview中显示出来,但是刷新的速率过慢,正常的话时间间隔是26,52间隔排列,但是我的时间间隔基本上没有26,很多都是52,中间夹杂着许多100多,200多的时间间隔,请问这是不是跟线程什么的有关系呢?
  • 打赏
  • 举报
回复
编程肯定有两方面的坑,过与不及都是坑。比如说任何阻塞语句都应该被剔除掉。再比如说异步过程中,当真正轮到 UI 线程显示数据的时候(并不是每一次改变数据都要显示),它就应该对于一大堆需要刷新的数据进行过滤,仅仅显示最新的状态。
  • 打赏
  • 举报
回复
datagridview 本身不可能去接收什么数据。 你应该把你们的“接收”功能独立出来,单独测试它接收数据的能力。例如假设一次收到一组数据,能不能报告接收到一组数据?是真正用接收数据事件触发机制的,还是坑爹的反复查询机制的? 然后考虑你们的 datagridview 之类的控件操作层,是使用异步 BeginInvoke 还是使用 同步阻塞 Invoke的?是对显示分组显示(例如300毫秒为一组集中显示数据还是每一次有数据都显示)?间隔过短的没有必要显示的数据有没有抽稀处理?等等。

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧