Maniraj.M Ответов: 2

Автоматически запускайте службу windows в течение нескольких часов, а затем автоматически останавливайтесь каждый день


Всем Привет,

У меня есть служба окон, которая должна автоматически запускаться в определенное время и автоматически останавливаться через несколько часов работы каждый день. я справляюсь с этим c#.net и мне нужно руководство, чтобы достичь именно того, что мне нужно.


заранее спасибо :)

Что я уже пробовал:

Я пробовал .чистый кодирование на C# в Windows-служба вызова метода onStart и onStop событие

Mehdi Gholam

Продолжайте работать с вашим сервисом и просто планируйте свою работу внутри сервиса.

Perić Željko

Использовании Мастер Управление Задач. В центре справки и поддержки Windows есть пошаговое объяснение того, как использовать Windows Task Sheduler.

2 Ответов

Рейтинг:
2

OriginalGriff

События OnStart и OnStop отправляются в вашу службу при запуске и остановке службы - их обработка не означает "запуск вашей службы" или "остановка вашей службы" . Они существуют для того, чтобы ваш сервис мог реагировать соответствующим образом - возможно, загружать и сохранять прогресс, - а не для того, чтобы "заставить его работать".

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


Рейтинг:
14

RickZeeland

Вы можете использовать планировщик задач Windows чтобы сделать это, см.: Как перезапустить службу windows с помощью планировщика задач - переполнение стека[^]
Если вы хотите вызвать планировщик задач из кода, я бы посоветовал вызвать его как команду DOS, библиотеки API очень сложны.


Maniraj.M

Методы onStart событие я написал одну функцию, которая будет вызываться за час до начала мероприятия. Эта функция проверит время и, если оно соответствует требуемому времени, перейдет к основной функции или же к событию Onpause. Как только наступит конечное время, функция перейдет к событию Onpause, а на следующий день-к событию Oncontinue.. Сработает ли это?

RickZeeland

Нет, это не сработает, так как событие Onstart вызывается только один раз при запуске вашего сервиса. Вы можете использовать таймер, который вызывает вашу функцию каждый час. Кроме того, не пытайтесь делать что-либо трудоемкое в событии Onstart, так как это не разрешено в сервисах.

Maniraj.M

Поэтому в конце концов я выбрал Планировщик заданий. Спасибо!