尝试运行以下代码时:
Task[] threads = new Task[5];
int[] nums = new int[5];
for (int i = 0; i < 5; i++)
{
threads[i] = new Task(() => { nums[i] = i; });
threads[i].Start();
}
Task.WaitAll(threads);
Console.WriteLine(nums);
Console.ReadLine();
我收到'IndexOutOfRangeException',因为FOR循环在达到4时没有停止,并且再进行一次迭代。它只有在我添加新变量c时才能正常工作,将i的值赋给c,并使用c作为索引。为什么会这样?有没有已知的解决方案?
提前多多感谢。