ich habe diesen Code:Array von Threads C#
Thread[] threadsArray = new Thread[4];
for (int i = 0; i < 4; i++)
{
threadsArray[i] = new Thread(() => c1.k(i));
}
for (int i = 0; i < 4; i++)
{
threadsArray[i].Start();
}
for (int i = 0; i < 4; i++)
{
threadsArray[i].Join();
}
die Funktion k ist dies:
void k(int i)
{
while(true)
Console.WriteLine(i);
}
aus irgendeinem Grund nur der letzte Thread ausgeführt wird und das Drucken 4444444 .... warum laufen nicht alle Threads?
dies die oddball Variante der Standard-Schließ-over-the-Loop-Variable Frage sein, die ich je gesehen habe. –
Dieser ist noch ähnlicher: http://stackoverflow.com/questions/1930133/c-closures-why-is-the-loopvariable-captured-by-reference –
Related: "Schließen über die Schleife Variable als schädlich" von Eric Lippert. http://blogs.msdn.com/b/ericlippert/archive/2009/11/12/closing-over-the-loop-variable-consided-harmful.aspx –