Я использую VS2010 .Net 4.0, поэтому я не могу использовать вызовы await
. У меня есть один поток, загружающий что-то, и я не должен продолжать, пока статус не станет «Готово». Поэтому я использую цикл while, блокирующий поток. Но каким-то образом он становится бесконечным циклом. Правильно ли я создаю нить?Почему цикл нитки бесконечно?
string status = string.Empty;
Thread thread = new System.Threading.Thread(() =>
{
status = Download(downloadKit, patchTitle);
});
thread.Start();
thread.Join();
// Loops here forever
while (status != "Done")
{
//Thread.Sleep(25); // Tried this as well, same result
Thread.SpinWait(1);
}
Наверное, потому что «статус» никогда не будет иметь шансов на изменение. – CollinD
Установите точку останова (F9) в инструкции Status = download и повторно запустите свою программу. Когда вы нажмете этот оператор, нажмите F11 на один шаг в методе загрузки. –
, мы должны быть уверены, что код загрузки вернется в определенный момент. Я полагаю, это не так. – pm100