Служба Windows должна ждать, Thread.Sleep? - PullRequest
6 голосов
/ 07 апреля 2010

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

Спасибо

Ответы [ 3 ]

9 голосов
/ 07 апреля 2010

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

5 голосов
/ 07 апреля 2010

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

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

4 голосов
/ 07 апреля 2010

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

...