Почему объект Task не использует передаваемый ему параметр?
я используюTask
чтобы обрабатывать несколько запросов параллельно и передавать разные параметры каждой задаче, но кажется, что все задачи принимают один последний параметр и выполняют метод, используя его.
Ниже приведен пример кода. Я ожидал выхода как:
0 1 2 3 4 5 6 ..99
но я получаю:
100 100 100 ..10.
Может быть, перед вызовом метода печати,i
значение уже100
но не должен ли каждый метод печатать передаваемый ему параметр? Почему бы метод печати принимает окончательное значениеi
?
class Program
{
static void Main(string[] args)
{
Task[]t = new Task[100];
for (int i = 0; i < 100; i++)
{
t[i] = Task.Factory.StartNew(() => print(i));
}
Task.WaitAll(t);
Console.WriteLine("complete");
Console.ReadLine();
}
private static void print(object i)
{
Console.WriteLine((int)i);
}
}