C#为DataRow[";haswatnots";]赋值=haswatnots的速度非常慢

C#为DataRow[";haswatnots";]赋值=haswatnots的速度非常慢,c#,.net,datatable,datarow,C#,.net,Datatable,Datarow,C#给DataRow[“haswatnots”]=haswatnots赋值非常慢。hasWhatnots是一个布尔值 我已经分析了这一行,有560000次点击,执行时间是82秒。当然探查器对性能有一定的影响,但它的性能仍然非常慢 关于这个问题的任何提示。DataRow是绑定到绑定到DataGridView.Datasource的BindingSource的DataTable的一部分 (编辑:只看到您正在进行数据绑定) 首先要尝试的是禁用数据绑定;可能会将源设置为null,然后重新绑定Bindin

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

我已经分析了这一行,有560000次点击,执行时间是82秒。当然探查器对性能有一定的影响,但它的性能仍然非常慢

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

(编辑:只看到您正在进行数据绑定) 首先要尝试的是禁用数据绑定;可能会将源设置为null,然后重新绑定
BindingSource
为此提供了
SuspendBinding()
ResumeBinding()
ResetBindings()


如果真正的问题只是查找,您可以捕捉
数据列
,然后使用:

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

// "real" code, perhaps in a loop
row[col] = hasWhatnots;
我似乎记得这是最快的路线(字符串重载从列表中找到
DataColumn

或者-使用
模型,而不是
数据表
-你可以试试这个

bindingSource1.RaiseListChangedEvents = false;

// stuff the grid

bindingSource1.RaiseListChangedEvents = true;

看看有没有不同。

很晚了,但还是有同样的问题

DataRow row

row.BeginEdit();
row["haswhatnots"] = hasWhatnots;
row.EndEdit();
在(我的规模)大型网格(60列,10k+行)上出现了极大的滞后,这将cpu时间缩短到比以前少1%