5

我使用此功能搜索所选目录中的所有 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 { }
    }
}

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

4

3 回答 3

1

关键是你不知道你会发现的 exe 文件的总数(也就是 100%),所以基本上你不能渲染进度条!对于这种任务,它更适合沙漏或选框酒吧......

于 2012-10-25T20:24:56.463 回答
0

也许我在这里遗漏了一些东西,但是为什么不将进度条的最大值分配给pending.Count每次处理文件时进度条的值加 1 呢?

于 2012-10-25T20:07:37.550 回答
0

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

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

进度条.最大值 = a;

于 2012-10-25T19:57:49.210 回答