Выполнение заказа потока?

У меня есть простой код: ( который я запускаю в 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 номеров !

вот некоторые результаты выполнения:

enter image description hereenter image description hereenter image description hereenter image description here

вопросы:

1) почему происходит случай 1 и как я могу его решить?

2) почему возникает случай 2 и как его решить?

5
задан Royi Namir 31 May 2012 в 11:29
поделиться