В двух следующих фрагментах, является первым безопасным или вы должны сделать второй?
Насколько я уверен, каждый поток гарантированно вызывает метод на Foo из той же итерации цикла, в которой был создан поток?
Или вы должны скопировать ссылку на новую переменную "local" на каждую итерацию цикла?
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();
}
Обновление: Как указано в ответе Джона Скита, это не имеет ничего общего с потоками.