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 = を # of files found に割り当てて設定するカウンターを割り当てることができます

progressBar.Maximum = a;

于 2012-10-25T19:57:49.210 に答える