当前位置:编程学习 > C#/ASP.NET >>

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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,