То же самое происходит в многопоточном режиме (C #, .NET 4.0].
См. следующий код:
Цель печати 1,2,3,4,5 в порядке.
for (int counter = 1; counter <= 5; counter++)
{
new Thread (() => Console.Write (counter)).Start();
}
Результат интересный! (Это может быть как 21334 ...)
Единственное решение - использовать локальные переменные.
for (int counter = 1; counter <= 5; counter++)
{
int localVar= counter;
new Thread (() => Console.Write (localVar)).Start();
}