Вполне вероятно, что поток не будет завершен до выполнения условия. То есть у вас есть:
getF.Start();
if (getF.ThreadState == ThreadState.Stopped)
Возможно, что поток даже не не запустится до того, как вы проверите, чтобы увидеть, остановился ли он. У основного потока должен быть какой-то способ узнать, что другой завершил свою работу.
Типичным способом ожидания завершения потока является вызов Join
. То есть:
getf.Start();
getf.Join(); // suspends main thread until the child thread is done
Но если вы сделаете это, вы заблокируете свой пользовательский интерфейс.
Причина использования нескольких потоков заключается в том, что основной поток (поток пользовательского интерфейса, в вашем случае) может выполнять другие действия, пока другие потоки выполняют свою работу. Я подозреваю, что вам нужен BackgroundWorker , который получит файлы, а затем выполнит некоторые действия после того, как это будет сделано - в обработчике RunWorkerCompleted
.