迭代文件结构时更新进度条

use*_*334 5 c# backgroundworker file-search winforms progress-bar

我使用这个函数来搜索所选目录中的所有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 { }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何根据找到的文件数更新进度条状态?

Pic*_*chu 0

您需要进行搜索,然后将进度条最大值设置为找到的文件数。

您可以分配一个计数器,将值 a = 分配给找到然后设置的文件数

ProgressBar.Maximum = a;

  • 他所做的工作只是查找文件。在完成之前他不会知道最大值是多少。 (2认同)