Ожидаемые таймеры или очередь таймеров? Плюсы и минусы каждого? - PullRequest
6 голосов
/ 16 декабря 2009

У меня есть служба Windows, которая должна периодически выполнять определенные действия. Следует ли мне использовать ожидаемые объекты таймера или очереди таймера ?

Каковы плюсы и минусы двух подходов? Это ложная дихотомия? Есть ли третий путь?

1 Ответ

7 голосов
/ 16 декабря 2009

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

Очереди таймеров - это очень легкие объекты, их обратный вызов выполняется в (дешевом) потоке из пула потоков. Почти всегда хорош для периодического обслуживания.

Третий способ - запустить поток при запуске службы и заблокировать его с помощью функции WaitForSingleObject (), таймаут которой устанавливает период. Вы ожидаете события, которое сигнализирует о том, что служба должна быть остановлена. Очень легко приступить к работе, не такой скудный, как очередь с таймером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...