根据我所阅读的编码指南,您不应该这样做。
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();
foreach
也是同样的道理。 - Darin Dimitrov