Написание запланированной службы Windows в .NET - PullRequest
3 голосов
/ 03 октября 2008

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

Ответы [ 5 ]

7 голосов
/ 03 октября 2008

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

6 голосов
/ 03 октября 2008

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

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

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

Никакого специального API вам не нужно.

2 голосов
/ 03 октября 2008

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

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

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

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

Подробности смотрите в моем блоге: алгоритм синтаксического анализатора расписаний CronTab

ура!

Roberto

0 голосов
/ 03 октября 2008

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

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