Я могу создать сервис окон и установить его.
Мне любопытно, как я могу выполнять этот сервис каждый час? Я хочу, чтобы это работало каждый час периодически.
Я также должен знать диапазон часа, который это выполняет так, чтобы я мог сохранить его где-нибудь.
Как я могу сделать это?
Редактирование: Этот сервис будет установлен на многих машинах, поэтому, я не хочу создавать запланированную задачу, говорят относительно 100 серверов.
Если вы хотите, чтобы задача выполнялась с регулярным интервалом, а не постоянно, вам следует изучить возможность использования Планировщика задач .
Если вам нужно, чтобы ваш код был службой, но чтобы он "активировался" каждый час, проще всего было бы сделать вашу службу COM-объектом и запланировать простую задачу каждый час, которая вызывает jscript / vbscript, который создает ваш COM-объект и вызывает для него простой метод.
Альтернативой является использование любого из API ожидания, чтобы «тратить» час без использования циклов.
Обратите внимание, что вам также необходимо принять во внимание некоторые интересные проектные решения, которые зависят от вашего сценария:
О некоторых из них позаботится планировщик задач, поэтому я настоятельно рекомендую использовать этот маршрут вместо ожидания час в вашем коде.
Есть несколько вариантов.
Вы можете создать запланированное задание , которое запускается каждый час, чтобы запустить службу или отправить сообщение, чтобы «разбудить» . Затем либо передайте текущее время в запросе запланированной задачи, либо просто пусть ваша программа выбирает текущее время, когда она просыпается.
Управляемая оболочка планировщика задач может помочь вам настроить это программно; вы также можете найти в Google другие ресурсы.
Thread.Sleep(TimeSpan.FromHours(1));
код будет более читабельным
Thread.Sleep()
решение сделает так, что ваш сервис будет запускаться с интервалом в один час, а не каждый час, т.е. каждая задача будет запускаться в 1 час + время на выполнение задачи. Рассмотрите возможность использования таймера в вашей службе. Это будет более надежным решением, поскольку вы сможете контролировать, когда запускать задачу, следить за ее выполнением и т.д. Помните, что каждое событие Timer
будет выполняться в отдельном потоке, и если выполнение задачи занимает более одного часа, вам, возможно, придется подождать завершения первой задачи, чтобы избежать параллельных задач.