20000条数据 datagridview 绑定datatable,子线程begininvoke实时刷新datatable 界面假死....
这个是我添加datarow 到datatable的函数public DataTable AddRecordToDT(List<string> RecordList, DataTable DT)
{
try
{
if (DT.Columns.Count == RecordList.Count)
{
DataRow DR = DT.NewRow();
for (int i = 0; i < DT.Columns.Count; i++)
{
DR[i] = RecordList[i];
}
DT.Rows.Add(DR);
return DT;
}
else
{
MessageBox.Show("列数错误!请检查列数是否吻合");
return null;
}
}
catch (Exception E)
{
AddErrorLog(E.Message.ToString());
return null;
}
}
这个是我调用的地方
BeginInvoke(new Action(() =>
{
ResultTable = BF.AddRecordToDT(ResultRow, ResultTable);
Thread.Sleep(10);
ICountLabel.Text = CurrentCompleted.ToString();
CheckProcessBar.Value = (CurrentCompleted * 100) / Total;
}));
我开大概80个子线程... 前面还好 到了大概7000个的样子就是界面卡死了 ...求大神如何解决这个问题 ..还是我写的程序有问题 ?? --------------------编程问答--------------------
是存储不够用了?
--------------------编程问答-------------------- 应该不会吧....总共内存还不到300M 应该不会...求版主进来看看呀.. --------------------编程问答-------------------- 多线程不加锁就操作同一个DataTable肯定是不对的,
你这里多线程应该是无意义的,只用一个线程试吧。
--------------------编程问答-------------------- 是的,并不是线程越多越快的。
如果加载效率不行,换DataGridView的虚拟模式。
20000条真的不算多,曾在listview中加载过150000以上。
(虽然加载这么多数据没有必要,因为太多,用户找不到要的信息)
补充:.NET技术 , C#