2016-09-26 5 views
5

Ich versuche, alle Zeilen in einer Textdatei zu lesen und zu planen, jede Zeileninfo anzuzeigen. Wie kann ich den Index für jedes Element innerhalb der Schleife finden?C# parallel foreach loop finding index

string[] lines = File.ReadAllLines("MyFile.txt"); 
    List<string> list_lines = new List<string>(lines); 
    Parallel.ForEach(list_lines, (line, index) => 
     { 
     Console.WriteLine(index); 
    // Console.WriteLine(list_lines[index]); 
     Console.WriteLine(list_lines[0]); 
     }); 
     Console.ReadLine(); 
+1

Was ist falsch mit dem 'index' Sie haben? –

+0

hier Index zeigt wahr oder falsch, wenn debugged. – Kurkula

+2

Ahh, denn wie Curtis sagt, ist 'index' der dritte Parameter für den Callback, nicht der zweite. –

Antwort

7

Es ist eine weitere Überlastung für Parallel.ForEach, dass Sie den Index gibt. Siehe https://msdn.microsoft.com/en-us/library/dd783359(v=vs.110).aspx

Parallel.ForEach(list_lines, (line, state, index) => 
    { 
     Console.WriteLine(index); 
     Console.WriteLine(list_lines[index]); 
    }); 
+0

Anstelle von 'list_lines [index]', wäre es nicht besser, das Callback-Argument ('line') zu verwenden? –

+0

Absolut, es ist nur ein Beispiel um zu zeigen, dass die Zeile syntaktisch und semantisch gültig ist ('index' ist vom richtigen Typ und repräsentiert semantisch den Index der aktuellen Zeile). –