Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Замечание
Эта статья не относится к размещенным службам в .NET. Последние сведения об использовании Microsoft.Extensions.Hosting.BackgroundService служб Windows и шаблоне рабочей службы см. в следующих статье:
Приложения службы Windows создаются на основе класса, который наследуется от класса System.ServiceProcess.ServiceBase. Вы переопределяете методы из этого класса и определяете функциональные возможности для них, чтобы определить, как работает служба.
Основными классами, участвующими в создании службы, являются:
System.ServiceProcess.ServiceBase — Вы переопределяете методы из класса ServiceBase при создании сервиса и определяете код, чтобы задать функциональность вашего сервиса в этом производном классе.
System.ServiceProcess.ServiceProcessInstaller и System.ServiceProcess.ServiceInstaller — эти классы используются для установки и удаления службы.
Кроме того, для управления самой службой можно использовать именованный ServiceController класс. Этот класс не участвует в создании службы, но может использоваться для запуска и остановки службы, передачи команд в нее и возврата ряда перечислений.
Определение поведения службы
В классе служб переопределяются функции базового класса, определяющие, что происходит при изменении состояния службы в диспетчере управления службами. Класс ServiceBase предоставляет следующие методы, которые можно переопределить для добавления пользовательского поведения.
| Метод | Переопределить на |
|---|---|
| OnStart | Укажите, какие действия следует предпринять при запуске службы. Чтобы служба выполняла полезную работу, необходимо написать код в этой процедуре. |
| OnPause | Укажите, что должно произойти при приостановке службы. |
| OnStop | Укажите, что должно произойти при остановке работы службы. |
| OnContinue | Укажите, что должно произойти, когда служба возобновляет нормальное функционирование после приостановки. |
| OnShutdown | Укажите, что должно произойти перед выключением системы, если служба в это время работает. |
| OnCustomCommand | Укажите, что должно происходить, когда служба получает пользовательскую команду. Дополнительные сведения о пользовательских командах см. в интернете в MSDN. |
| OnPowerEvent | Укажите, как служба должна реагировать при получении события управления питанием, например низкий заряд батареи или приостановка работы. |
Замечание
Эти методы представляют состояния, через которые проходит служба в ходе своего жизненного цикла; служба переходит из одного состояния в следующее. Например, служба никогда не будет реагировать на OnContinue команду до вызова OnStart.
Существует несколько других свойств и методов, представляющих интерес. К ним относятся:
Метод Run класса ServiceBase. Это основная точка входа для службы. При создании службы с помощью шаблона службы Windows код вставляется в метод приложения
Mainдля запуска службы. Этот код выглядит следующим образом:ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new Service1() }; Run(ServicesToRun);Dim ServicesToRun() As System.ServiceProcess.ServiceBase ServicesToRun = New System.ServiceProcess.ServiceBase() {New Service1()} System.ServiceProcess.ServiceBase.Run(ServicesToRun)Замечание
В этих примерах используется массив типа ServiceBase, в который можно добавить все службы, содержащиеся в вашем приложении, и затем запускать их вместе. Однако если вы создаете только одну службу, вы можете не использовать массив и просто объявить новый объект, наследующий от ServiceBase, а затем запустить его. Пример см. в статье "Практическое руководство. Написание служб программным способом".
Ряд свойств класса ServiceBase . Эти правила определяют, какие методы можно вызывать в вашей службе. Например, если свойство CanStop установлено в значение
true, можно вызвать метод OnStop в вашей службе. Если для свойства CanPauseAndContinue задано значениеtrue, можно вызвать методы OnPause и OnContinue. При установке одного из этих свойствtrueнеобходимо переопределить и определить обработку для связанных методов.
Вы также можете использовать компонент под названием ServiceController чтобы взаимодействовать с существующей службой и управлять её поведением.