Служба Windows должна ожидать, Поток. Сон?

У меня есть c# сервис окон, который должен выполнять запрос базы данных каждые 60 секунд (или независимо от того, что интервал установлен в файле конфигурации). Я использую Thread.sleep (60) в некоторое время цикле для выполнения этого. Существует ли лучший способ сделать это?

Спасибо

6
задан Dan H 6 April 2010 в 20:25
поделиться

3 ответа

Вы можете использовать System.Threading.Timer для запуска вашего кода каждые 60 секунд вместо того, чтобы делать это в спящем потоке.

9
ответ дан 8 December 2019 в 12:58
поделиться

Это зависит от того, чем вы хотите заниматься. Если вам нужен (более) точный метод, вы можете использовать System.Threading.Timer . Одна вещь о thread.sleep заключается в том, что это действительно "sleepatleastuntil ...". Процессор будет игнорировать ваш поток, пока не истечет время сна. В следующий раз, когда он предоставит приоритет вашему потоку, по истечении времени ожидания он будет.

Обычно это очень близко к желаемому интервалу, но может быть больше. Не уступайте, если вы действительно не собираетесь уступать.

5
ответ дан 8 December 2019 в 12:58
поделиться

Используйте Таймер , чтобы запускать процесс каждые 60 секунд, а не переводить его в спящий режим.

4
ответ дан 8 December 2019 в 12:58
поделиться