2012-10-25 16 views
5

Io uso questa funzione, per la ricerca di tutti i file EXE nella directory selezionata:Aggiornamento barra di avanzamento durante l'iterazione struttura dei file

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 { } 
    } 
} 

Come posso aggiornare lo stato della barra di avanzamento, in base al numero di file trovati?

+0

È un'app wpf? –

+2

Dato che non si conosce il numero totale di file (o dovrei dire, a meno che non si conosca il numero totale di file) sapendo quanti ne hai trovati finora non ti dice quale percentuale completa sei. Basta usare una barra di selezione. – Servy

+0

no, la sua applicazione Windows Form standard in VS 2010 – user1775334

risposta

0

Si desidera eseguire una ricerca e quindi impostare la barra di avanzamento al massimo sul numero di file trovati.

È possibile assegnare un contatore che assegna il valore a = a # dei file trovati quindi impostare

ProgressBar.maximum = a;

+0

Potresti scrivere un esempio? grazie. – user1775334

+2

Il lavoro che sta facendo è semplicemente trovare i file. Non saprà quale sia il massimo finché non avrà finito. – Servy

+0

Richiederebbe il wrapping due volte, trovando tutti i file totali per ottenere il massimo e quindi "fingere" effettivamente per cercare i file totali. La sua migliore scommessa è una barra di selezione con un'etichetta # di file trovato. – Pichu

0

Forse mi manca qualcosa qui, ma perché non assegni il Massimo della barra di avanzamento a pending.Count e aggiungi 1 al valore della barra di avanzamento ogni volta che elabori un file?

1

Il punto è che non si conosce il numero totale di file exe (alias il 100%) che troverai così fondamentalmente che NON è possibile visualizzare una barra di avanzamento! Per questo tipo di attività sarebbe più adatto una clessidra o una barra di selezione ...