我正在进行一些实验以了解事物的运作方式。我有以下代码...
for (int i = 0; i < 20; i++)
{
Task.Factory.StartNew(() => MethodTest(i));
}
我想知道为什么MethodTest几乎总是收到int 20(除非我在调试器中逐步执行)。
显然,我的理解有所欠缺,因为我假设当'i'被传递时,它将成为托管线程的本地存储的一部分。
您正在封闭循环变量 - 请尝试以下方法:
for (int i = 0; i < 20; i++)
{
int x = i;
Task.Factory.StartNew(() => MethodTest(x));
}