Может быть лучше пойти по пути использования таймера для периодического пробуждения и проверки готовности устройства.
У вас есть как минимум два варианта System.Timers.Timer
или System.Threading.Timer
.
Тем не менее, это, вероятно, означает, что вам придется больше участвовать в многопоточности, чтобы таймер мог уведомить остальную часть вашей программы о продолжении работы, когда устройство будет готово (например, с помощью WaitHandle
или какого-либо другого типа как AutoResetEvent
).
По сути, в использовании Thread.Sleep
для блокировки одного синхронного потока нет ничего неправильного.