在运行时,我的应用程序从MSSQL服务器获取数据,并且有一个对象将数据提取到我的自定义数据集中。 这是代码:
public static void FillRegionData(int country, RegionDataTable DestinationTable)
{
DestinationTable.Clear();
using (selectRegionsListTableAdapter _taSource = new selectRegionsListTableAdapter())
{
BusStationDataSet.selectRegionsListDataTable _tblSource = _taSource.GetData(country, Settings.Default.DataLanguage);
foreach (BusStationDataSet.selectRegionsListRow row in _tblSource.Rows)
{
DestinationTable.Rows.Add(new object[] {
row.region,
row.country,
row.title });
}
}
}
一切顺利,直到foreach开始工作。超过100行会导致整个应用程序挂起几秒钟。
为什么这段代码太慢了?
答案 0 :(得分:1)
此时DestinationTable
可能是数据绑定的吗?由于DataTable
会发出更改通知,因此在绑定时添加大量数据会导致性能瓶颈。在许多情况下,您可以在执行此操作时暂停数据绑定。或者,填充第一个,然后将其填入数据绑定。
(这里的区别在于它是否每次行重绘和刷新一次UI,或者整体)