下面的代码不能像我期望的那样工作。我究竟做错了什么?每次运行的输出都不相同。有没有更好的方法来做到这一点?假设行动做了比下面更复杂的事情。线程安全传递整数到任务执行任务
Action<int> action = (int m) =>
{
if ((m % 2) == 0)
Console.WriteLine("Even");
else
Console.WriteLine("Odd");
};
const int n = 10;
Task[] tasks = new Task[n];
for (int i = 0; i < n; i++)
{
tasks[i] = Task.Factory.StartNew(() => action(i+1));
}
Task.WaitAll(tasks);
嗯,为什么这是downvoted?我确信它是重复的,但在我的脑海里,这是一个完全有效的,适当的问题。 – Cameron
@Cameron:Upvoted它,所以它再次0 :-) – sprinter252
我没有downvote,但这个问题已被问了很多次之前。另外,问题的有效性在重复时无关紧要。 – Matthew