1

C# 为 DataRow["haswhatnots"] = hasWhatnots 赋值非常慢。hasWhatnots 是一个布尔值。

我已经分析了这条线,点击 560000 次,执行时间为 82 秒。当然 profiler 对性能有一些影响,但是这个性能还是很慢!

关于这个问题的任何提示。DataRow 是绑定到绑定到 DataGridView.Datasource 的 BindingSource 的 DataTable 的一部分。

4

3 回答 3

2

(编辑:只看到你是数据绑定)首先要尝试的是禁用数据绑定;也许将源设置为 null 并在之后重新绑定。BindingSourceSuspendBinding()ResumeBinding()并且ResetBindings()为此。


如果真正的问题只是查找,您可以拍下DataColumn, 并使用:

// early code, once only...
DataColumn col = table.Columns["haswhatnots"];

// "real" code, perhaps in a loop
row[col] = hasWhatnots;

我似乎记得这是最快的路线(字符串重载DataColumn从列表中定位)。

或者 - 使用class模型而不是DataTable;-p

于 2009-11-13T12:57:56.253 回答
0

你可以试试这个

bindingSource1.RaiseListChangedEvents = false;

// stuff the grid

bindingSource1.RaiseListChangedEvents = true;

看看它是否有所作为。

于 2009-11-13T13:55:47.493 回答
0

很晚了,但仍然有同样的问题

DataRow row

row.BeginEdit();
row["haswhatnots"] = hasWhatnots;
row.EndEdit();

在(以我的规模)大型网格(60 列,10k+ 行)上发生了极端滞后,这将 cpu 时间减少到不到以前的百分之一。

于 2017-01-30T15:24:42.950 回答