2012-10-25 16 views
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 { } 
    } 
} 

どのようにして見つかったファイルの数に基づいて、プログレスバーのステータスを更新することができますか?

+0

これはwpfアプリですか? –

+2

あなたが今までに見つけた人の数を知っていても、あなたがどれくらい完了したのかは分かりません。マーキーバーを使用するだけです。 – Servy

+0

いいえ、VS 2010の標準ウィンドウフォームアプリケーション – user1775334

答えて

0

検索し、見つかったファイルの数にプログレスバーの最大値を設定します。

あなたはその後、見つかったファイルの#に、A =が

progressBar.Maximum = Aを設定した値を代入するカウンタを割り当てることができます。

+0

例を書くことができますか?どうも。 – user1775334

+2

彼がやっている仕事は単にファイルを見つけることです。彼はすべてが終わるまで、最大のものが何であるかを知りません。 – Servy

+0

2回折り返す必要があります。合計ファイルをすべて見つけて最大にし、実際には合計ファイルを検索するふりをします。 彼の最善の策は、#見つかったファイルのラベルのマーキーバーです。 – Pichu

0

私はここで何かが見つからないかもしれませんが、進捗バーの最大値をpending.Countに割り当て、ファイルを処理するたびにプログレスバーの値に1を追加するのはなぜですか?

1

重要なことは、あなたが見つけられるexeファイル(別名100%)の総数がわからないということです。基本的にはプログレスバーを表示できません!この種の作業のためには、砂時計やマーキーバーにもっと適しています。