【发布时间】:2018-12-11 23:47:27
【问题描述】:
我正在尝试使用 4 个任务对字节数组的所有值求和。所以我在 main 方法中编写了一个 for 循环,每次循环时都会启动并运行一个新任务:
for (int i = 0; i < tasks.Length; i++)
{
Task.Run(() => Sum(i));
}
Sum 方法的参数是partitionNumber。在 Sum 方法中,它首先执行的是:
Console.WriteLine("I is " + i);
当我运行它时,它会显示:
I is 4
I is 4
I is 4
I is 4
但是,如果我这样写:
Task.Run(() => Sum(0));
Task.Run(() => Sum(1));
Task.Run(() => Sum(2));
Task.Run(() => Sum(3));
结果打印:
I is 0
I is 1
I is 2
I is 3
我的问题是为什么?如何使用 for 循环而不是复制代码来运行 4 任务?
非常感谢。
【问题讨论】:
-
将
Task.Run(() => Sum(i));更改为var bob = i; Task.Run(() => Sum(bob)); -
bing.com/search?q=C%23+Running+task+in+a+for+loop+same 会给你更多的问题来看看如果重复是不够的。