#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 /