Самый эффективный способ выполнить задачу по настраиваемому расписанию - PullRequest
2 голосов
/ 30 декабря 2010

Я создаю Службу Windows для автоматического развертывания нашего программного обеспечения в нескольких различных средах.

Когда служба запускается, она создает собственный объект Deployer. Сначала объект Deployer считывает файл конфигурации, содержащий список сред и время, в которое они должны быть развернуты, например QA-0900,1400 для развертывания в QA в 9:00 и 14:00. Затем он запускает таймер с тайм-аутом 45 секунд и после этого проверяет каждый тайм-аут, совпадает ли текущее время со временем в списке. Если он находит совпадение, он начинает развертывание в этой среде.

Кажется глупым и неэффективным опрос каждые 45 секунд, но я не могу придумать лучшего способа сделать это.

Есть идеи?

Ответы [ 3 ]

7 голосов
/ 30 декабря 2010

Должен ли это быть процесс обслуживания Windows?Похоже, что-то, что можно сделать с помощью системы планирования задач Windows .Особенно, если вы используете Windows Server 2008, планирование задач достаточно мощное, и задачами можно управлять программно.

1 голос
/ 30 декабря 2010

Сортировать список по времени, выбрать первый элемент, спать до тех пор.

0 голосов
/ 30 декабря 2010

Проверьте планировщик задач, как упомянуто выше в ppl, хотя я не уверен в этом, плюс, как они говорят, это так же хорошо, как говорят в win 2008. Для моей работы планировщику задач было недостаточно поддерживать winxp и win2003 serverв виду ..

В Win Service, возможно, вы создаете события, которые будут запускаться только в установленное время, которое вы будете устанавливать при создании события, поэтому к этому времени оно будет вызываться, и ваш сервис будет выполнятьопределенная задача в событии.Помимо этой службы, которая будет работать непрерывно с Thread.Sleep (10000), что достаточно справедливо, вы можете выполнить небольшое профилирование, чтобы увидеть производительность \ объем памяти.

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