现在的位置: 主页 > 主打产品 > 文章列表

paip.提升性能---.net listbox 使用BeginUpdate与E

作者:程力专用汽车股份有限公司 来源:www.chLiw.com 发布时间:2017-09-03 12:39:57
paip.提升性能---.net listbox 使用BeginUpdate与EndUpdate

使用默认的 this.listBox1.Items.Add(line);这种方式


结果如下:
1千行数据:1秒
1万行: 3.5秒
10万行: 40秒


查找资料说,使用使用BeginUpdate与EndUpdate 可提高性能。
于是使用了BeginUpdate与EndUpdate


结果如下:


结果如下:
1千行数据:0.5秒
1万行: 4秒
10万行: 44秒


结论:
--------
使用BeginUpdate与EndUpdate 在几千行数量级时,确实可提高性能无一倍……
但在一万级以及十万级数据时,采集软件,专题系统,甚至比默认方式更慢个10%……


---------------主要源码如下:-----------


int loadRecNum = 0;
long curtime = 0;
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDlg = new OpenFileDialog();
openFileDlg.Title = "请选择:";
openFileDlg.Filter = "*.*|*.*";
openFileDlg.ShowDialog();
if (openFileDlg.CheckFileExists)
{
if (openFileDlg.FileName.Equals(""))
return;
String pathYZM = openFileDlg.FileName;


//c452308 add txt2list
Thread t = new Thread(new ParameterizedThreadStart(
delegate(object obj)
{
loadRecNum = 0;
curtime = DateTime.Now.Ticks;


//c45 big txt


//Pass the file path and file name to the StreamReader constructor
StreamReader sr = new StreamReader(pathYZM);


//Read the first line of text
string line = sr.ReadLine();


//Continue to read until you reach end of file
int n = 0;
// listBox1.Visible = false;


listBox1.Invoke(new EventHandler(delegate
{
this.listBox1.BeginUpdate();
}));

Form1 fm = (Form1)obj;
while (line != null)
{
// Thread.Sleep(5);
// Console.WriteLine("--" + n.ToString() + ":" + line);
n++;

//write the lie to console window
if (n % 1000 == 0)
{
Console.WriteLine("--" + n.ToString() + ":" + line);
//listBox1.Invoke(new EventHandler(delegate
//{
// listBox1.EndUpdate();
// // this.listBox1.BeginUpdate();
//}));

}


add2List(line);

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:恩施网站建设 http://enshi.45qun.com

上一篇:横向导航菜单-Web标准(div+css)教程 下一篇:最后一页

本周热门文章