Как запустить и остановить службу Windows по расписанию? - PullRequest
2 голосов
/ 02 февраля 2012

У меня есть служба, которую я написал для выполнения пакетных заданий, но требование состоит в том, чтобы начать обработку в 16:00 и завершить ее в 5:00.Если есть работа, которая еще обрабатывается, время нужно будет продлить до завершения работы.

Буду ли я заключать стартовый вызов в таймер или как?Я действительно не знаю, как это будет выглядеть, поскольку я привык к сервисам, запускаемым и работающим до бесконечности (или до тех пор, пока не появятся ящики с танками .. или пока не встретится необработанное исключение).чтобы достичь этого.

Редактировать: Мне нужен сервис, потому что я выполняю пакет служб SSIS через dtexec () и командный файл в C #.Некоторые другие вещи должны происходить так же, как вход в систему управления базами данных и очередями.

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

Ответы [ 5 ]

4 голосов
/ 02 февраля 2012

Это звучит как задача, которая лучше обрабатывается планировщиком задач Windows. Если вы не используете что-то вроде Win2K или XP, у него есть все настройки, необходимые для запуска в определенное время, позволяют запускаться в течение ограниченного времени, он может запустить процесс с определенными учетными данными (если вам нужно запустить повышен), а также запускается, когда никто не вошел в систему.

И у него есть удобный удобный графический интерфейс для управления всем этим, без необходимости кодирования!

UPDATE

ОК, исходя из ваших комментариев, вам действительно нужен рабочий процесс. Я бы разработал каждую из отдельных задач в отдельном проекте (отдельно .exe или .dll в зависимости от ваших потребностей). А затем посмотрите и Windows Workflow Foundation разработайте «контроллер» рабочего процесса, который вы сможете использовать для выполнения отдельных задач.

1 голос
/ 02 февраля 2012

Три варианта:

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

  2. Служба постоянно "работает", но не работает некоторое время между выполнениями.Однако это может привести к проблемам, если программа будет работать дольше, чем предполагалось.

  3. Установите службу для запуска с интервалами в 15 минут (или около того) и проверьте, сколько времени.Если это начальный период, запустите программу.

Первый и третий варианты кажутся наилучшими.

1 голос
/ 02 февраля 2012

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

1 голос
/ 02 февраля 2012

что вы ищете, это запланированное задание

если вы / должны / имеете службу Windows, вы используете Таймеры и устанавливаете таймер для проверки один раз каждые (всякий раз, когда я использую 30 минут для такого рода вещей), и если время между 4 и 5 часами утра, выполняйте работу.

1 голос
/ 02 февраля 2012

Я думаю, что сервис должен быть запущен до бесконечности и проверить время, чтобы увидеть, если уже 4:00 вечера, и если так, начать свою работу, и когда наступит 5:00, просто закончите и подождите еще 4:00 вечера.

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