我使用DataGridView来监视IO事件。每次发生新的IO事件时,DataGridView都会用包含时间戳和其他数据的新项填充。这些更新每10毫秒发生一次,我想把新项目放在网格的顶部。
我只需要在网格中保留~100行;为了不消耗内存,旧的应该被丢弃。我所有的尝试都被证明太慢了,你对如何解决这个问题有什么想法吗?
显示计时数据是一项相当具有挑战性的任务。提高性能的最大步骤之一是将刷新率降低到人眼可识别的数字-每秒20次刷新,而无需对每个IO事件做出反应。
- 创建或使用环缓冲区,只存储100条记录,减少GC/内存。
- 使用Dispatcher timer并安排每50ms刷新一次网格。在计时器滴答时,将缓冲区数据抓取到预分配的集合中,并完全刷新网格。
您可以通过优化步骤2来进一步改进实现,例如减少单元格的度量。