【发布时间】:2012-10-25 19:55:01
【问题描述】:
我使用这个功能,搜索所选目录中的所有exe文件:
public static IEnumerable<string> GetFiles(string root, string searchPattern)
{
Stack<string> pending = new Stack<string>();
pending.Push(root);
while (pending.Count != 0)
{
var path = pending.Pop();
string[] next = null;
try
{
next = Directory.GetFiles(path, searchPattern);
}
catch { }
if (next != null && next.Length != 0)
foreach (var file in next) yield return file;
try
{
next = Directory.GetDirectories(path);
foreach (var subdir in next) pending.Push(subdir);
}
catch { }
}
}
如何根据找到的文件数更新进度条状态?
【问题讨论】:
-
因为你不知道文件的总数(或者我应该说,除非你知道文件的总数)知道到目前为止你找到了多少并不能告诉你什么 %你是完整的。只需使用选框栏即可。
-
不,它在 VS 2010 中的标准 windows 窗体应用程序
-
ProgressBar 控件需要一个最大值,这允许它正确增加 UI 值。
-
如果您使用的是 .NET4+,您应该使用 DirectoryInfo.EnumerateFiles(...) 而不是 Directory.GetFiles(...)。 EnumerateFiles 允许根据需要从中构建文件列表,并且通常性能更高。
标签: c# winforms progress-bar backgroundworker file-search