快速更新的DataGridView

时间:2014-06-24 19:51:29

标签: c# performance datagridview insert-update

我使用DataGridView来监控IO事件。每次发生新的IO事件时,DataGridView都会填充一个包含其他数据中的时间戳的新项。这些更新每10毫秒更新一次,我想将新项目放在网格的顶部。

我只需要在网格中保留~100行;旧的应丢弃,以免消耗内存。我所有的尝试都被证明是太慢了,你对如何处理这个问题有任何想法吗?

1 个答案:

答案 0 :(得分:1)

显示滴答数据是一项非常具有挑战性的任务。提高性能的最重要步骤之一是将刷新率降低到人眼可识别的数量 - 每秒20次刷新,而不会对每个IO事件做出反应。

  1. 创建或使用环形缓冲区仅存储100条记录并减少GC /内存。
  2. 使用Dispatcher计时器并每50ms计划一次网格刷新。在计时器滴答声中,将缓冲区数据抓取到预分配的集合中并完全刷新网格。
  3. 然后,您可以通过优化步骤2来进一步改进实施 - 比如减少细胞的测量。