Czy w dwóch kolejnych fragmentach pierwszy z nich jest bezpieczny, czy też musisz zrobić drugi?
Przez bezpieczne rozumiem, czy każdy wątek gwarantuje wywołanie metody na Foo z tej samej iteracji pętli, w której został utworzony wątek?
A może musisz skopiować odniesienie do nowej zmiennej „lokalnej” do każdej iteracji pętli?
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();
}
Aktualizacja: Jak wskazano w odpowiedzi Jona Skeeta, nie ma to nic wspólnego z wątkami.