Я пишу приложение, работающее с большой и уродливой сторонней системой через сложный API. Иногда в системе происходят некоторые ошибки, но если мы ожидаем, что моя программа столкнется с этими ошибками, может быть слишком поздно.Зачем использовать System.Threading.Thread.Sleep() - плохая практика?
Итак, я использую отдельный поток, чтобы проверить состояние системы следующим образом:
while (true)
{
ask_state();
check_state();
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(1));
}
Это действительно не имеет значения, если я проверить состояние системы один раз в 100 мс или один раз в минуту.
Но я слышал, что использование Thread.Sleep() - плохая практика. Зачем? И что я могу сделать в этой ситуации?
Если вы хотите периодически проверять, почему бы не использовать таймер? – germi
Главный вопрос: «Таймер лучше или нет? и почему Thread.Sleep() плохо? – user2862319
Потому что вы держите поток живым ненужным. Вопрос, действительно ли это имеет значение, конечно, зависит от вашего контекста. Если у вас есть простое приложение, то использование периодического таймера или выделенного потока, скорее всего, не приведет к возникновению различий в производительности, поскольку таймер просто заставит поток из пула потоков остаться в живых. – Polity