2008-10-02 9 views
3

Я хочу написать службу Windows, которую пользователь может запланировать. т.е. пользователь может ежедневно запускать услугу с 9:00 до 18:00, или он может запускать ее каждую ночь, начиная с ночи 12 часов в ночное время до следующего дня утром 6 и т. д. Есть ли какая-либо из box .NET API, который поможет мне сделать это? Я знаю, что могу сделать это с помощью запланированных задач, но есть ли способ сделать это программно?Запись запланированной службы Windows в .NET

ответ

6

Моим первым ответом является вопрос, почему услуга? Но что еще более важно, вопрос в том, почему бы не использовать мощный планировщик, предоставляемый операционной системой?

Сказанное говорит, что служба Windows - это всего лишь поток, в котором работает ваше приложение. Вы можете отправить его в две части, первая - это сама служба, которая выполняется по таймеру. Запуск службы может проверить значение реестра, чтобы определить, как часто он должен выполняться.

Вторая часть службы - это небольшое приложение для Windows, которое позволяет пользователю устанавливать расписание и, конечно же, записывать его в ранее упомянутое значение реестра.

Существует не какой-либо специальный API, который вам нужен.

0

Если вы планируете его планировать, просто создайте консольную программу и добавьте код в программу установки, которая поможет пользователю настроить запланированную задачу в Windows.

7

У меня были хорошие результаты, используя Quartz.NET для выполнения запланированных задач внутри службы Windows. Вы можете делать все от простого планирования интервалов до графиков в стиле cron.

2

Если вы не хотите, чтобы пользователь имел дело с планировщиком задач, вам следует написать программу, которая позволит им выбрать день и время для запуска программы, а затем вы программно настраиваете запланированную задачу для их. Таким образом, им никогда не нужно знать конкретно о том, какой процесс вы используете, и им также не нужно знать, как использовать планировщик задач. Они просто делают все это из вашего приложения.

0

Я реализовал некоторые автоматизированные службы (службы Windows, написанные на C#), используя алгоритм crontab для управления планированием. Шаблон является мощным и гибким. Мы можем создавать расписания в любое время, когда хотим, используя только выражение cron. Возможно, я ошибаюсь, но единственный график, который, как мне кажется, не охватывает крона, - это если мы хотим последний день месяца, но это никогда не требовалось для всех сервисов.

Я скопировал алгоритм cron из статьи в Интернете (с открытым исходным кодом Atif Aziz) и реализовал в своем классе утилиты, прекрасно работая годами.

Смотрите более подробную информацию в своем блоге: CronTab schedule parser algorithm

Ура!

Roberto

 Смежные вопросы

  • Нет связанных вопросов^_^