ServiceBase Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет базовый класс для службы, которая будет существовать в составе приложения службы. ServiceBase должен быть производным от создания нового класса службы.
public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
inherit Component
Public Class ServiceBase
Inherits Component
- Наследование
- Производный
Комментарии
Производный от ServiceBase определения класса службы в приложении-службе. Любая полезная служба переопределяет OnStart методы и OnStop методы. Для дополнительных функций можно переопределить OnPause и OnContinue с определенным поведением в ответ на изменения состояния службы.
Служба — это длительный исполняемый файл, который не поддерживает пользовательский интерфейс, и который может не выполняться в учетной записи пользователя, вошедшего в систему. Служба может выполняться без входа пользователя на компьютер.
По умолчанию службы выполняются под системной учетной записью, которая не совпадает с учетной записью администратора. Нельзя изменить права учетной записи системы. Кроме того, можно указать ServiceProcessInstaller учетную запись пользователя, в которой будет выполняться служба.
Исполняемый файл может содержать несколько служб, но должен содержать отдельную ServiceInstaller для каждой службы. Экземпляр ServiceInstaller регистрирует службу в системе. Установщик также связывает каждую службу с журналом событий, который можно использовать для записи команд службы. Функция main() в исполняемом файле определяет, какие службы должны выполняться. Текущий рабочий каталог службы — это системный каталог, а не каталог, в котором находится исполняемый файл.
При запуске службы система находит исполняемый файл и запускает OnStart метод для этой службы, содержащийся в исполняемом файле. Однако запуск службы не совпадает с выполнением исполняемого файла. Исполняемый файл загружает только службу. Доступ к службе (например, запущен и остановлен) через диспетчер управления службами.
Исполняемый файл вызывает ServiceBase конструктор производного класса при первом вызове start в службе. Метод OnStart обработки команд вызывается сразу после выполнения конструктора. Конструктор не выполняется повторно после первой загрузки службы, поэтому необходимо разделить обработку, выполняемую конструктором, от нее.OnStart Все ресурсы, которые можно освободить, OnStop должны быть созданы в OnStart. Создание ресурсов в конструкторе предотвращает их правильное создание, если служба запущена снова после OnStop выпуска ресурсов.
Диспетчер управления службами (SCM) предоставляет способ взаимодействия со службой. SCM можно использовать для передачи команд Start, Stop, Pause, Continue или custom commands в службу. SCM использует значения CanStop и CanPauseAndContinue определяет, принимает ли служба команды Stop, Pause или Continue. Остановка, приостановка и продолжение включены в контекстных меню SCM только в том случае, если соответствующее свойство CanStop или CanPauseAndContinuetrue находится в классе службы. Если этот параметр включен, команда передается в службу и OnStopOnPauseвызывается или OnContinue вызывается. Если CanStop, CanShutdownили CanPauseAndContinue есть false, соответствующий метод обработки команд (например OnStop), не будет обработан, даже если вы реализовали метод.
Класс можно использовать ServiceController для программного использования SCM с помощью пользовательского интерфейса. Вы можете автоматизировать задачи, доступные в консоли. Если CanStop, CanShutdownили CanPauseAndContinue нет true , но вы не реализовали соответствующий метод обработки команд (например OnStop), система выдает исключение и игнорирует команду.
Не требуется реализовать OnStartOnStopили любой другой метод.ServiceBase Однако поведение службы описано как OnStartминимум, поэтому этот элемент должен быть переопределен. Функция main() исполняемого файла регистрирует службу в исполняемом файле с помощью диспетчера управления службами путем вызова Run метода. Свойство ServiceNameServiceBase объекта, переданного Run методу, должно соответствовать ServiceName свойству установщика службы для этой службы.
Вы можете использовать sc create команду для установки служб, предназначенных для современной платформы .NET, или для InstallUtil.exe установки служб, предназначенных для .NET Framework.
Замечание
Вы можете указать журнал, отличный от журнала событий приложения, чтобы получать уведомления о вызовах служб, но ни AutoLogEventLog свойство не может записывать в пользовательский журнал. Установите значениеfalse, AutoLog если вы не хотите использовать автоматическое ведение журнала.
Конструкторы
| Имя | Описание |
|---|---|
| ServiceBase() |
Создает новый экземпляр ServiceBase класса. |
Поля
| Имя | Описание |
|---|---|
| MaxNameLength |
Указывает максимальный размер имени службы. |
Свойства
| Имя | Описание |
|---|---|
| AutoLog |
Указывает, следует ли сообщать команды "Пуск", "Остановить", "Приостановить" и "Продолжить" в журнале событий. |
| CanHandlePowerEvent |
Возвращает или задает значение, указывающее, может ли служба обрабатывать уведомления об изменениях состояния питания компьютера. |
| CanHandleSessionChangeEvent |
Возвращает или задает значение, указывающее, может ли служба обрабатывать события изменения сеанса, полученные из сеанса сервера терминалов. |
| CanPauseAndContinue |
Возвращает или задает значение, указывающее, может ли служба быть приостановлена и возобновлена. |
| CanRaiseEvents |
Возвращает значение, указывающее, может ли компонент вызвать событие. (Унаследовано от Component) |
| CanShutdown |
Возвращает или задает значение, указывающее, должна ли служба получать уведомления при завершении работы системы. |
| CanStop |
Возвращает или задает значение, указывающее, можно ли остановить службу после запуска. |
| Container |
Возвращает объект IContainer , содержащий Componentобъект . (Унаследовано от Component) |
| DesignMode |
Возвращает значение, указывающее, находится ли текущий Component режим разработки. (Унаследовано от Component) |
| EventLog |
Возвращает журнал событий, который можно использовать для записи уведомлений о вызовах команд службы, таких как запуск и остановка, в журнал событий приложения. |
| Events |
Возвращает список обработчиков событий, подключенных к этому Component. (Унаследовано от Component) |
| ExitCode |
Возвращает или задает код выхода для службы. |
| ServiceHandle |
Возвращает дескриптор элемента управления службой для службы. |
| ServiceName |
Возвращает или задает короткое имя, используемое для идентификации службы в системе. |
| Site |
Возвращает или задает ISite объект Component. (Унаследовано от Component) |
Методы
| Имя | Описание |
|---|---|
| CreateObjRef(Type) |
Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
| Dispose() |
Освобождает все ресурсы, используемые параметром Component. (Унаследовано от Component) |
| Dispose(Boolean) |
Удаляет ресурсы (кроме памяти), используемые параметром ServiceBase. |
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetLifetimeService() |
Устаревшие..
Извлекает текущий объект службы времени существования, который управляет политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
| GetService(Type) |
Возвращает объект, представляющий службу, предоставляемую Component или ее Container. (Унаследовано от Component) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| InitializeLifetimeService() |
Устаревшие..
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| MemberwiseClone(Boolean) |
Создает неглубокую копию текущего MarshalByRefObject объекта. (Унаследовано от MarshalByRefObject) |
| OnContinue() |
При реализации в производном классе OnContinue() выполняется при отправке команды Continue в службу диспетчером управления службами (SCM). Указывает действия, которые необходимо предпринять, когда служба возобновляет нормальное функционирование после приостановки. |
| OnCustomCommand(Int32) |
При реализации в производном классе выполняется, OnCustomCommand(Int32) когда диспетчер управления службами (SCM) передает пользовательскую команду службе. Указывает действия, выполняемые при выполнении команды с указанным значением параметра. |
| OnPause() |
При реализации в производном классе выполняется при отправке команды Приостановки в службу диспетчером управления службой (SCM). Указывает действия, выполняемые при приостановке службы. |
| OnPowerEvent(PowerBroadcastStatus) |
При реализации в производном классе выполняется при изменении состояния питания компьютера. Это относится к ноутбукам, когда они переходят в приостановленный режим, который не совпадает с завершением работы системы. |
| OnSessionChange(SessionChangeDescription) |
Выполняется при получении события изменения из сеанса сервера терминалов. |
| OnShutdown() |
При реализации в производном классе выполняется при завершении работы системы. Указывает, что должно происходить непосредственно перед завершением работы системы. |
| OnStart(String[]) |
При реализации в производном классе выполняется при отправке команды Start в службу диспетчером управления службами (SCM) или при запуске операционной системы (для службы, которая запускается автоматически). Указывает действия, выполняемые при запуске службы. |
| OnStop() |
При реализации в производном классе выполняется при отправке команды Stop в службу диспетчером управления службами (SCM). Указывает действия, выполняемые при остановке работы службы. |
| RequestAdditionalTime(Int32) |
Запрашивает дополнительное время для ожидающей операции. |
| RequestAdditionalTime(TimeSpan) |
При вызове этого метода из OnStart, OnStop, OnPause или OnContinue указанная подсказка ожидания передается диспетчеру управления службами, чтобы избежать того, чтобы служба помечалась как не отвечая. |
| Run(ServiceBase) |
Регистрирует исполняемый файл для службы с помощью диспетчера управления службами (SCM). |
| Run(ServiceBase[]) |
Регистрирует исполняемый файл для нескольких служб в диспетчере управления службами (SCM). |
| ServiceMainCallback(Int32, IntPtr) |
Регистрирует обработчик команд и запускает службу. |
| Stop() |
Останавливает выполнение службы. |
| ToString() |
String Возвращает имя, содержащее имя , если таковое Componentимеется. Этот метод не должен быть переопределен. (Унаследовано от Component) |
События
| Имя | Описание |
|---|---|
| Disposed |
Происходит при удалении компонента вызовом Dispose() метода. (Унаследовано от Component) |