Поделиться через


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)

Применяется к

См. также раздел