c# listbox 显示大量数据速度很慢,如何解决?

来源:百度知道 编辑:UC知道 时间:2024/06/06 03:04:24
c#使用listbox加载10m以上数据,第一次显示的时候速度很慢要几分钟,cpu占用%100,如何解决这个问题?谢谢,不用考虑这种设计是否合理
具体是这样实现的:
form里有两个tabpage1和tabpage2,当前窗体默认给用户呈现的是tabpage1,listbox是在tabpage2中,通过items.add把所有数据都加入listbox,程序运行完毕后,用户从tabpage1切换到tabpage2,这个时候显示listbox所有内容的过程就很慢,要好几分钟,cpu占用达到100%。
不考虑分页,如何能使显示时间减少?

谢谢,10m的记录总字节,先不考虑分页(因为涉及到各个tabpage自动跳转功能),能否解决这个问题?

10m内容是直接从另一个程序的文本日志取过来的,循环add的速度用户可以接受,就是第一次显示很慢,只要第一次显示完成后,再怎么切换都很顺畅。

多谢各位,咱们先解决如何提高listbox第一次显示大量数据的效率?

第一 为什么不考虑是否合理 100%不合理
解决方法
1.优化数据库
2.用存储过程写
3.分批ITEM.ADD 意思就是 你可以1M 1M的加 就比较快了

用这个方法可能稍微快点,我的机子上要19秒文件8.48M
private void button1_Click(object sender, EventArgs e)
{
DateTime dt = DateTime.Now;
string[] strArr = File.ReadAllLines("D:\\AAAA.txt", Encoding.Default);
listBox1.DataSource = strArr;
TimeSpan ts = DateTime.Now - dt;
MessageBox.Show(ts.Seconds.ToString());
}

10m是多少?
是记录数,还是记录总字节?
如果是我,我会想办法分页。
你呈现给用户10M的记录有意义么?得看到什么时候?交互性不好,不友好!

10m以上数据太多了。而且用items.add这样来增加数据循环的次太多了,如果是用来显示的用datagridview速度会提高很多。

设计的绝对的不合理。想你这样如果100M的数据,你有没有想过数据量多大?
你这样循环ADD。时间不久才怪。最好的方式就是利用算法,一次取多少。