78k的text 文件,输出到textbox 竟然用了20几秒的原因

  开始查资料以为是io读取的,磁盘速度慢的之类的,后来一想,text 又不是几十万条数据,才那么两千行,咋回事。

原来是循环中不停的修改textbox值导致的。

总结:

 比较大的运算,特别是大的循环,不要操作控件,因为控件的一些属性每改变一次,都要paint重绘一次,这样效率会很低
一般用变量来操作,然后完了一次就执行掉。

贴上代码:

string file = fileDialog.FileName;
//删除后缀 存入files类Filename属性 ,后用于存在word第一行

StreamReader sr = new StreamReader(file, System.Text.Encoding.Default);
String line;
StringBuilder sb = new StringBuilder();
// int n = 0;
while (sr.Peek() > -1)
{

//显示在textbox中
sb.Append(line + " ");
//textBox2.Text = sb.ToString();   //sb 在循环中向 texbox2 发送数据,每次发送,textbox控件都要刷新一次,导致程序效率直线下降。
//跳过行空格
if (line.Trim() != "")
{
……
if (lines.Length >= 3)
{

//数据传入数组然后入队列
……
}
}
}

r.Close(); sr.Dispose();
textBox2.Text = sb.ToString(); //放在此处问题解决
}
}

原文地址:https://www.cnblogs.com/zuochanzi/p/5632695.html