Простая копия макарон здесь:
static void Main(string[] args)
{
List<Task> Tasks = new List<Task>();
Random r = new Random();
for (int o = 0; o < 5; o++)
Tasks.Add(Task.Factory.StartNew(() => { int i = r.Next(0, 3000); Thread.Sleep(i); Console.WriteLine("{0}: {1}", o, i); }));
Task.WaitAll(Tasks.ToArray());
Console.Read();
}
Когда вы запустите это, вы получите что-то вроде этого:
5: 98
5: 198
5: 658
5: 1149
5: 1300
Что я не понимаю по этому поводу? Запись каждой итерации o
показывает как 5 для всех потоков, когда я ожидаю увидеть числа от 0 до 4 в случайном порядке.
Я попытался использовать реальный метод вместо анонимного, и он делает то же самое. Чего мне не хватает?
Редактировать: Я только что нашел проблему с моим самым первым постом и отредактировал вопрос, так что извините, если вы ответили о проблеме неправильного заказа. Однако мне любопытно, почему o
не пишет правильно.