当应用程序需要在后台运行一个很大的进程,同时保持其用户界面处于激活和可用状态时,就应产生新线程。
下例在后台搜索文件时就用到了一个线程:
private void cmdMultiSearch_Click(object sender, EventArgs e)
...{
//这里使用线程是为了让Windows在用户界面和进行搜索线程之间来回切换着执行流。
//这样处理器有一个时间片来更新用户界面,以反映列表框中的变化。
Thread t = new Thread(new ThreadStart(Search));
t.Start();
}
public void Search()
...{
search = textBox1.Text;
listBox1.Items.Clear();
fileCount = 0;
SearchDirectory(@"C:Program Files");//搜索目录
}
public void SearchDirectory(string Path)
...{
//Search the directory
DirectoryInfo di = new DirectoryInfo(Path);
FileInfo[] f = di.GetFiles(search);//获取当前目录的所有文件
listBox1.BeginUpdate();
foreach (FileInfo myFile in f) //遍历目录里的所有文件
listBox1.Items.Add(myFile.FullName);
listBox1.EndUpdate();
//Search its sub directores
DirectoryInfo[] d = di.GetDirectories();//获取当前目录的子目录
foreach (DirectoryInfo myDir in d) //遍历所有子目录
SearchDirectory(myDir.FullName);
}