Ist in den beiden folgenden Ausschnitten der erste sicher oder müssen Sie den zweiten ausführen?
Mit sicher meine ich, ist garantiert, dass jeder Thread die Methode auf dem Foo aus derselben Schleifeniteration aufruft, in der der Thread erstellt wurde?
Oder müssen Sie den Verweis auf eine neue Variable "local" in jede Iteration der Schleife kopieren?
var threads = new List<Thread>();
foreach (Foo f in ListOfFoo)
{
Thread thread = new Thread(() => f.DoSomething());
threads.Add(thread);
thread.Start();
}
- -
var threads = new List<Thread>();
foreach (Foo f in ListOfFoo)
{
Foo f2 = f;
Thread thread = new Thread(() => f2.DoSomething());
threads.Add(thread);
thread.Start();
}
Update: Wie in Jon Skeets Antwort ausgeführt, hat dies nichts spezielles mit Threading zu tun.