У меня есть простой код: ( который я запускаю в linqpad )
void Main()
{
for ( int i=0;i<10;i++)
{
int tmp=i;
new Thread (() =>doWork(tmp)).Start();
}
}
public void doWork( int h)
{
h.Dump();
}
строка int tmp=i;
предназначена для захвата переменной, поэтому каждая итерация будет иметь свое значение.
2 проблемы:
1)числа непоследовательные, а выполнение потока !
2)иногда я получаю меньше10 номеров !
вот некоторые результаты выполнения:
вопросы:
1) почему происходит случай 1 и как я могу его решить?
2) почему возникает случай 2 и как его решить?