Запускать задачу службы Windows в определенное время с помощью C#

#c#

#c#

Вопрос:

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

  • Загрузите по HTTP XML-файл списка воспроизведения из репозитория CDN в определенное время, пусть будет 03:12:12 вечера.

я ищу профессиональный код (просто поток или скелетон таймера), а не код, который работает.

Я надеюсь, что предоставил вам всю необходимую информацию.

С наилучшими пожеланиями

Bratom

Ответ №1:

Если вам нужна библиотека планирования, я бы порекомендовал Quartz.Net, который я использовал в разных проектах с хорошими результатами.

Ответ №2:

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

Планировать задачи

Просто вставьте строку кода в файл .bat, который запускает службу, и запланируйте запуск этого пакетного файла в определенное время.

Комментарии:

1. я не буду разделять свое лечение (задачи службы Windows и задачи расписания). в любом случае, большое спасибо

Ответ №3:

Выполнение чего-либо в определенное время не сильно отличается от выполнения этого периодически.

Допустим, вы хотите что-то сделать в какой-то момент в будущем. Мы будем называть это targetDate .

 DateTime targetDate = GetActionTime(); // whatever

// compute the difference between targetDate and now.
// we use UTC so that automatic time changes (like daylight savings) don't affect it
TimeSpan delayTime = targetDate.ToUniversalTime() - DateTime.UtcNow;

// Now create a timer that waits that long ...
Timer t = new Timer(TimerProc, null, delayTime, TimeSpan.FromMilliseconds(-1));
  

Этот таймер запустит обратный вызов один раз. Если вы хотите, чтобы это повторялось в одно и то же время каждый день, вы можете передать целевую дату (или, возможно, ссылку на запись, описывающую все событие) в программу timer proc и попросить программу timer proc обновить целевую дату, а затем вызвать Timer.Change , чтобы изменить время выполнения таймера. Обязательно установите период в -1 миллисекунду, чтобы предотвратить превращение его в периодический таймер.

Ответ №4:

Вам нужно что-то вроде реализации Cron на c #, попробуйте это: http://www.raboof.com/Projects/NCrontab / или http://sourceforge.net/projects/cronnet /