Ответ 1
Thread.Yield прервет текущий поток, чтобы другие потоки могли работать. Однако, если у них нет работы, ваш поток скоро будет перенесен и продолжит опрос, таким образом, 100% -ное использование 1 ядра.
Заставляет вызывающий поток выполнить исполнение для другого потока, который готов к запуску на текущем процессоре. Операционная система выбирает поток, который должен иметь значение.
Thread.Sleep запустит ваш поток для повторного запуска после истечения времени ожидания, что значительно снизит загрузку процессора.
Блокирует текущий поток для указанного количества миллисекунд.
Учитывая выбор между двумя, Thread.Sleep
лучше подходит для вашей задачи. Тем не менее, я согласен с комментарием от @Bryan, что Threading.Timer
делает более элегантное решение.