Должен ли я всегда использовать Task.Delay вместо Thread.Sleep? [Дубликат]

На этот вопрос уже есть ответ здесь:

Когда использовать Task.Delay, когда использовать Thread.Sleep? 4 ответа

Недавно я видел несколько рекомендаций о том, чтоThread.Sleep никогда не должен использоваться в производственном коде (последний раз вэтот ТАК вопрос). Многие из них выступают за использованиеTask.Delay вместо. В большинстве объяснений, которые я нашел, в качестве примеров используются приложения пользовательского интерфейса, посколькуTask.Delay очевидны (не блокируют пользовательский интерфейс).

В моем случае я используюThread.Sleep внутри цикла ожидания, который опрашивает службу WCF для определенного условия, например так:

DateTime end = DateTime.UtcNow + TimeSpan.FromMinutes(2);
while (DateTime.UtcNow < end)
{
    if (ExternalServiceIsReady() == true)
    {
        return true;
    }
    Thread.Sleep(1000);
}

В этом случае следующие потенциальные преимуществаTask.Delay кажется, не применяются:

Время ожидания довольно велико по сравнению с типичным разрешением таймера около 15 мс, поэтому увеличение точностиTask.Delay кажется тривиальным.Процесс является однопоточным (без пользовательского интерфейса) и должен блокироваться, пока условие не будет выполнено, поэтому используйтеawait здесь нет никаких преимуществ.Возможность отмены задержки не требуется.

Это тот случай, когда целесообразно использоватьThread.Sleep? Каково было бы преимущество (если есть) замены линии сна наTask.Delay(1000).Wait()?

Ответы на вопрос(1)

Ваш ответ на вопрос