C#为DataRow赋值[“haswhatnots”] = hasWhatnots非常慢

时间:2009-11-13 12:54:24

标签: c# .net datatable datarow

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

我已经分析了这一行,并且560000次点击的执行时间为82秒。当然,分析器对性能有一些影响,但这种性能仍​​然非常慢!

有关此问题的任何提示。 DataRow是DataTable的一部分,DataTable绑定到绑定到DataGridView.Datasource的BindingSource。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

你可以试试这个

bindingSource1.RaiseListChangedEvents = false;

// stuff the grid

bindingSource1.RaiseListChangedEvents = true;

看看它是否有所作为。

答案 2 :(得分:0)

很晚,但仍有同样的问题

DataRow row

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

在(在我的规模上)大网格(60列,10k +行)中出现了极端滞后,这使得CPU时间缩短到不到1%。