Знакомство со способами взаимодействия с существующими службами
Обновлен: Ноябрь 2007
Для подключения к существующим службам и контроля за их работой можно использовать компонент ServiceController. При создании экземпляра компонента ServiceController он настраивается на взаимодействие с определенной службой Windows. Впоследствии данный экземпляр компонента можно использовать для запуска службы, завершения ее работы и прочих манипуляций. Например, можно создать компонент ServiceController и использовать его с компонентом Timer для запуска и завершения работы службы через определенный период времени.
Компонент ServiceController позволяет выполнить ряд полезных действий. Например:
Можно запускать подключенную службу, прекращать или приостанавливать ее работу, а также производить любые другие административные действия, на которые служба способна ответить. Дополнительные сведения см. в разделе Практическое руководство. Выполнение задач администрирования служб.
Можно извлекать значения различных свойств службы, с которой взаимодействует компонент. Например, можно определить, есть ли возможность завершения, приостановки или продолжения работы службы, получив значения свойств CanStop и CanPauseAndContinue.
Можно получить список служб, которые существуют на определенном компьютере.
Можно указать пользовательскую команду для вызова в службе. Дополнительные сведения о пользовательских командах см. на веб-узле MSDN Online.
Компонент ServiceController передает свои запросы на действия не самой службе, а диспетчеру управления службами. После чего диспетчер управления службами завершает, запускает или приостанавливает работу службы или выполняет другие указанные действия. После того как компонент ServiceController передал запрос диспетчеру управления службами, он возвращается и не ждет, пока диспетчер управления службами передаст запрос службе. Поэтому исключения следует обрабатывать не в классе ServiceController, а в самом классе службы.
Примечание. |
---|
Как правило, добавлять компонент ServiceController в приложение Windows Service не нужно, если планируется, что данный компонент будет управлять службой, находящейся в этом же проекте. Код в проекте, который создает службу, не может быть использован для контроля за службой; она должна контролироваться из другого контекста. |
См. также
Задачи
Практическое руководство. Создание экземпляров компонента ServiceController
Практическое руководство. Выполнение задач администрирования служб