2009-11-13 68 views
1

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

我已经描述了这一行,并且560000个点击的执行时间是82秒。当然,性能分析器对性能有一定的影响,但其性能仍然非常缓慢!

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

回答

2

(编辑:只是看到你是数据绑定) 首先要尝试的是禁用数据绑定;也许将源设置为null,然后重新绑定。 BindingSource为此具有SuspendBinding(),ResumeBinding()ResetBindings()


如果真正的问题只是查找,你可以采取DataColumn的一个单元,并使用:

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

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

我似乎记得,这是最快的路线(字符串超载所在的从列表中选择DataColumn)。

或者 - 而不是使用DataTable ;-p

0

一个class模式你可以试试这个

bindingSource1.RaiseListChangedEvents = false; 

// stuff the grid 

bindingSource1.RaiseListChangedEvents = true; 

,看看它是否有差别。

0

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

DataRow row 

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

有极端滞后,存在的上(在我的规模)大电网(60周的cols,10K +行),并且该板缺的CPU时间少然后是以前的百分之一。