Я знаю из руководств по кодированию, что я прочитал, вы не должны делать
for (int i = 0; i < 5; i++)
{
Task.Factory.StartNew(() => Console.WriteLine(i));
}
Console.ReadLine();
как он напишет 5 5, я понимаю это и думаю, что понимаю, почему это происходит. Я знаю, что решение просто сделать
for (int i = 0; i < 5; i++)
{
int localI = i;
Task.Factory.StartNew(() => Console.WriteLine(localI));
}
Console.ReadLine();
Но что-то вроде этого нормально делать?
foreach (MyClass myClass in myClassList)
{
Task.Factory.StartNew(() => myClass.DoAction());
}
Console.ReadLine();
Или мне нужно сделать то же самое, что я делал в цикле for.
foreach (MyClass myClass in myClassList)
{
MyClass localMyClass = myClass;
Task.Factory.StartNew(() => localMyClass.DoAction());
}
Console.ReadLine();