【发布时间】:2013-04-03 09:04:44
【问题描述】:
我正在尝试从特定目录中搜索许多文本文件,然后使用 textchanged 事件在所有文件中查找文本,并仅在屏幕上显示包含该文本的行。
目前它正在运行,但速度太慢。我正在发布一个搜索文本并在列表框中显示的功能。什么可能是最有效的方法来让它工作得有点快。
listBox2.Items.Clear();
ArrayList lines = new ArrayList();
if (txtfile.Count > 0)
{
for (int i = 0; i < txtfile.Count; i++)
{
lines.AddRange((File.ReadAllLines(Path.Combine(path, txtfile[i].ToString()))));
}
for (int i = 0; i < lines.Count; i++)
{
if(lines[i].ToString().IndexOf(txt,StringComparison.InvariantCultureIgnoreCase)>=0)
{
listBox2.Items.Add(lines[i].ToString());
}
}
}
【问题讨论】:
-
什么是
txt,什么是txtfile? -
对于
TextChanged事件,Textbox中文本的每次更改都会重新触发搜索,这将导致性能下降。可能会根据Button_Click而不是TextChanged事件触发搜索,该事件将针对添加或删除的每个字符触发。 -
@TimSchmelter txt 是要搜索的文本,txtfile 是包含所有要搜索的文件的数组
标签: c# .net performance search