用户注意到 DataGridView 中的记录开始出现在屏幕上的时间有所延迟。
所以我分析了日志,发现调用 DataTable.Rows.Add() 的时间和数据表中的记录数量之间存在很强的依赖关系。如果一开始不到 0.01 毫秒,当表中有大约 10000 条记录时增长到 1 毫秒,当 50000 条时增长到 5 毫秒。有两个线程:一个添加记录,另一个删除。DataTable 绑定到 DataGridView 意味着它会在每次 DataTable 行集合更改时自动更新 gridview。
我的理解是,在表中 100000 等记录的数量上,不应该有这样的延迟。我应该考虑为 DataGridView 实现 VirtualMode 吗?我注意到 VirtualMode 属性设置为 true,但未处理 CellValueNeeded 事件。
代码如下所示:
var row = table.NewRow();
//manipulations with row
table.Rows.Add(row);
row.AcceptChanges();
并删除:
var row = table.Rows.Find(id);
if (row != null) {
row.Delete();
row.AcceptChanges();
}