ServiceBase ServiceBase ServiceBase ServiceBase Class

Определение

Предоставляет базовый класс для службы, которая будет существовать в рамках служебного приложения.Provides a base class for a service that will exist as part of a service application. При создании нового класса службы необходимо наследовать от класса ServiceBase.ServiceBase must be derived from when creating a new service class.

public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
    inherit Component
Public Class ServiceBase
Inherits Component
Наследование

Комментарии

Являются производными от ServiceBase при определении класса службы в приложении службы.Derive from ServiceBase when defining your service class in a service application. Любая используемая служба переопределяет OnStart и OnStop методы.Any useful service overrides the OnStart and OnStop methods. Для получения дополнительных возможностей, можно переопределить OnPause и OnContinue с особое поведение в ответ на изменения в состоянии службы.For additional functionality, you can override OnPause and OnContinue with specific behavior in response to changes in the service state.

Служба — длительно исполняемом файле, который не поддерживает пользовательский интерфейс, и может не запускаться под учетной записью пользователя, выполнившего вход.A service is a long-running executable that does not support a user interface, and which might not run under the logged-on user account. Эта служба может работать без вмешательства пользователя, вход на компьютер.The service can run without any user being logged on to the computer.

По умолчанию службы работают с учетной записью System, который не совпадает с учетной записью администратора.By default, services run under the System account, which is not the same as the Administrator account. Невозможно изменить права учетной записи System.You cannot change the rights of the System account. Кроме того, можно использовать ServiceProcessInstaller для указания учетной записи пользователя, под которой будет выполняться служба.Alternatively, you can use a ServiceProcessInstaller to specify a user account under which the service will run.

Исполняемый файл может содержать более одной службы, но может содержать отдельный ServiceInstaller для каждой службы.An executable can contain more than one service but must contain a separate ServiceInstaller for each service. ServiceInstaller Регистрирует экземпляр службы в системе.The ServiceInstaller instance registers the service with the system. Установщик также связывает каждой службы, можно использовать для записи команды службы журнала событий.The installer also associates each service with an event log that you can use to record service commands. main() Функция в исполняемом файле, определяет, какие службы должны выполняться.The main() function in the executable defines which services should run. Текущий рабочий каталог службы — каталог системы, а не от каталога, в котором находится исполняемый файл.The current working directory of the service is the system directory, not the directory in which the executable is located.

При запуске службы, система находит исполняемый файл и запускает OnStart метод для этой службы, содержащихся в исполняемый файл.When you start a service, the system locates the executable and runs the OnStart method for that service, contained within the executable. Тем не менее со службой не так же, как выполнение исполняемого объекта.However, running the service is not the same as running the executable. Исполняемый файл загружает только служба.The executable only loads the service. Службе осуществляется через диспетчер управления службами в (например, остановки и запуска).The service is accessed (for example, started and stopped) through the Service Control Manager.

Исполняемый файл вызывает ServiceBase производного класса конструктор первое время вызвать Start в службе.The executable calls the ServiceBase derived class's constructor the first time you call Start on the service. OnStart Обработки команд метод вызывается сразу после выполнения конструктора.The OnStart command-handling method is called immediately after the constructor executes. Конструктор не выполняется после первой загрузки службы, поэтому необходимости в разделении обработки, выполняемой с помощью конструктора от выполнения OnStart.The constructor is not executed again after the first time the service has been loaded, so it is necessary to separate the processing performed by the constructor from that performed by OnStart. Все ресурсы, которые могут быть сняты по OnStop должны создаваться в OnStart.Any resources that can be released by OnStop should be created in OnStart. Создание ресурсов в конструкторе предотвращает их создание при запуске службы после OnStop выпустила ресурсы.Creating resources in the constructor prevents them from being created properly if the service is started again after OnStop has released the resources.

Диспетчер управления службами (SCM) предоставляет способ взаимодействия со службой.The Service Control Manager (SCM) provides a way to interact with the service. Диспетчер управления Службами можно использовать для передачи в службу Start, Stop, Pause, продолжить или пользовательские команды.You can use the SCM to pass Start, Stop, Pause, Continue, or custom commands into the service. Диспетчер управления Службами использует значения CanStop и CanPauseAndContinue для определения, принимает ли служба остановки, приостановки или продолжения работы команды.The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. Остановить, приостановить и продолжить включены в контекст SCM меню, только если соответствующее свойство CanStop или CanPauseAndContinue является true в классе службы.Stop, Pause, and Continue are enabled in the SCM's context menus only if the corresponding property CanStop or CanPauseAndContinue is true in the service class. Если параметр включен, команда передается в службу, и OnStop, OnPause, или OnContinue вызывается.If enabled, the command is passed to the service, and OnStop, OnPause, or OnContinue is called. Если CanStop, CanShutdown, или CanPauseAndContinuefalse, соответствующий метод обработки команд (таких как OnStop) не будут обрабатываться, даже если вы уже был реализован.If CanStop, CanShutdown, or CanPauseAndContinue is false, the corresponding command-handling method (such as OnStop) will not be processed, even if you have implemented the method.

Можно использовать ServiceController класс можно сделать программным образом какие SCM делает, с помощью пользовательского интерфейса.You can use the ServiceController class to do programmatically what the SCM does using a user interface. Можно автоматизировать задачи, доступные в консоли.You can automate the tasks available in the console. Если CanStop, CanShutdown, или CanPauseAndContinuetrue , но не реализовали соответствующий метод обработки команд (таких как OnStop) система создает исключение и игнорирует команду.If CanStop, CanShutdown, or CanPauseAndContinue is true but you have not implemented a corresponding command-handling method (such as OnStop) the system throws an exception and ignores the command.

Необходимо реализовать OnStart, OnStop, или любой другой метод в ServiceBase.You do not have to implement OnStart, OnStop, or any other method in ServiceBase. Тем не менее, поведение службы описана в OnStart, поэтому как минимум, следует переопределить этот член.However, the service's behavior is described in OnStart, so at minimum, this member should be overridden. main() Функция исполняемого файла регистрирует службу в исполняемый файл с помощью диспетчера службы путем вызова Run метод.The main() function of the executable registers the service in the executable with the Service Control Manager by calling the Run method. ServiceName Свойство ServiceBase объект, передаваемый в Run метод должен соответствовать ServiceName свойство установщика службы для этой службы.The ServiceName property of the ServiceBase object passed to the Run method must match the ServiceName property of the service installer for that service.

Можно использовать InstallUtil.exe для установки служб в вашей системе.You can use InstallUtil.exe to install services on your system.

Примечание

Можно указать журнал, отличный от журнала событий приложения для получения уведомлений о вызовов службы, но ни один AutoLog ни EventLog свойство можно написать пользовательский журнал.You can specify a log other than the Application event log to receive notification of service calls, but neither the AutoLog nor the EventLog property can write to a custom log. Задайте AutoLog для false Если вы не хотите использовать автоматического ведения журнала.Set AutoLog to false if you do not want to use automatic logging.

Конструкторы

ServiceBase() ServiceBase() ServiceBase() ServiceBase()

Создает новый экземпляр класса ServiceBase.Creates a new instance of the ServiceBase class.

Поля

MaxNameLength MaxNameLength MaxNameLength MaxNameLength

Указывает максимальный размер имени службы.Indicates the maximum size for a service name.

Свойства

AutoLog AutoLog AutoLog AutoLog

Определяет необходимость записи в журнал событий команд запуска, останова, паузы и возобновления.Indicates whether to report Start, Stop, Pause, and Continue commands in the event log.

CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent

Получает или задает значение, указывающее, может ли служба обрабатывать уведомления об изменениях состояния питания компьютера.Gets or sets a value indicating whether the service can handle notifications of computer power status changes.

CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent

Получает или задает значение, показывающее, может ли служба обрабатывать события изменения сеанса, принимаемые от сеанса сервера терминалов.Gets or sets a value that indicates whether the service can handle session change events received from a Terminal Server session.

CanPauseAndContinue CanPauseAndContinue CanPauseAndContinue CanPauseAndContinue

Получает или задает значение, определяющее возможность приостановки и возобновления работы службы.Gets or sets a value indicating whether the service can be paused and resumed.

CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

Возвращает значение, показывающее, может ли компонент вызывать событие.Gets a value indicating whether the component can raise an event.

(Inherited from Component)
CanShutdown CanShutdown CanShutdown CanShutdown

Получает или задает значение, определяющее необходимость уведомления службы о завершении работы системы.Gets or sets a value indicating whether the service should be notified when the system is shutting down.

CanStop CanStop CanStop CanStop

Получает или задает значение, определяющее, можно ли остановить работу службы после ее запуска.Gets or sets a value indicating whether the service can be stopped once it has started.

Container Container Container Container

Возвращает контейнер IContainer, содержащий компонент Component.Gets the IContainer that contains the Component.

(Inherited from Component)
DesignMode DesignMode DesignMode DesignMode

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
EventLog EventLog EventLog EventLog

Получает журнал событий, который можно использовать для записи в журнал событий приложения уведомлений о вызовах команд службы, например, команд запуска и останова.Gets an event log you can use to write notification of service command calls, such as Start and Stop, to the Application event log.

Events Events Events Events

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
ExitCode ExitCode ExitCode ExitCode

Получает или задает код завершения для службы.Gets or sets the exit code for the service.

ServiceHandle ServiceHandle ServiceHandle ServiceHandle

Получает дескриптор управления службой.Gets the service control handle for the service.

ServiceName ServiceName ServiceName ServiceName

Получает или задает короткое имя, используемое для идентификации службы в системе.Gets or sets the short name used to identify the service to the system.

Site Site Site Site

Возвращает или задает ISite объекта Component.Gets or sets the ISite of the Component.

(Inherited from Component)

Методы

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

Освобождает все ресурсы, занятые модулем Component.Releases all resources used by the Component.

(Inherited from Component)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Уничтожает ресурсы (кроме памяти), используемые классом ServiceBase.Disposes of the resources (other than memory) used by the ServiceBase.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetService(Type) GetService(Type) GetService(Type) GetService(Type)

Возвращает объект, представляющий службу, обеспечиваемую компонентом Component или его контейнером Container.Returns an object that represents a service provided by the Component or by its Container.

(Inherited from Component)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
OnContinue() OnContinue() OnContinue() OnContinue()

Если метод OnContinue() реализован в производном классе, он запускается при передаче службе команды возобновления диспетчером служб.When implemented in a derived class, OnContinue() runs when a Continue command is sent to the service by the Service Control Manager (SCM). Задает действия, подлежащие выполнению при возобновлении нормальной работы службы после ее приостановки.Specifies actions to take when a service resumes normal functioning after being paused.

OnCustomCommand(Int32) OnCustomCommand(Int32) OnCustomCommand(Int32) OnCustomCommand(Int32)

Если метод OnCustomCommand(Int32) реализован в производном классе, он выполняется при передаче службе пользовательской команды диспетчером служб.When implemented in a derived class, OnCustomCommand(Int32) executes when the Service Control Manager (SCM) passes a custom command to the service. Задает действия, подлежащие выполнению при появлении команды с указанным значением параметра.Specifies actions to take when a command with the specified parameter value occurs.

OnPause() OnPause() OnPause() OnPause()

Если этот метод реализован в производном классе, он выполняется при передаче службе команды паузы диспетчером служб.When implemented in a derived class, executes when a Pause command is sent to the service by the Service Control Manager (SCM). Задает действия, подлежащие выполнению при приостановке работы службы.Specifies actions to take when a service pauses.

OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus)

Если этот метод реализован в производном классе, он выполняется при изменении состояния питания компьютера.When implemented in a derived class, executes when the computer's power status has changed. Это применимо для переносных компьютеров, когда они переходят в режим приостановки (этот режим отличается от режима завершения работы системы).This applies to laptop computers when they go into suspended mode, which is not the same as a system shutdown.

OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription)

Выполняется при получении события изменения от сеанса сервера терминалов.Executes when a change event is received from a Terminal Server session.

OnShutdown() OnShutdown() OnShutdown() OnShutdown()

Если этот метод реализован в производном классе, он выполняется при завершении работы системы.When implemented in a derived class, executes when the system is shutting down. Задает действия, выполняемые непосредственно перед завершением работы системы.Specifies what should occur immediately prior to the system shutting down.

OnStart(String[]) OnStart(String[]) OnStart(String[]) OnStart(String[])

Если этот метод реализован в производном классе, он выполняется при передаче службе команды запуска диспетчером служб или при запуске операционной системы (для служб, запускаемых автоматически).When implemented in a derived class, executes when a Start command is sent to the service by the Service Control Manager (SCM) or when the operating system starts (for a service that starts automatically). Задает действия, подлежащие выполнению при запуске службы.Specifies actions to take when the service starts.

OnStop() OnStop() OnStop() OnStop()

Если этот метод реализован в производном классе, он выполняется при передаче службе команды останова диспетчером служб.When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). Задает действия, подлежащие выполнению при останове службы.Specifies actions to take when a service stops running.

RequestAdditionalTime(Int32) RequestAdditionalTime(Int32) RequestAdditionalTime(Int32) RequestAdditionalTime(Int32)

Запрашивает дополнительное время для отложенной операции.Requests additional time for a pending operation.

Run(ServiceBase) Run(ServiceBase) Run(ServiceBase) Run(ServiceBase)

Регистрирует исполняемый файл для службы с помощью диспетчера служб.Registers the executable for a service with the Service Control Manager (SCM).

Run(ServiceBase[]) Run(ServiceBase[]) Run(ServiceBase[]) Run(ServiceBase[])

Регистрирует исполняемый файл для нескольких служб с помощью диспетчера служб.Registers the executable for multiple services with the Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr)

Регистрирует обработчик команд и запускает службу.Registers the command handler and starts the service.

Stop() Stop() Stop() Stop()

Останавливает работающую службу.Stops the executing service.

ToString() ToString() ToString() ToString()

Возвращает объект String, содержащий имя Component, если оно есть.Returns a String containing the name of the Component, if any. Этот метод не следует переопределять.This method should not be overridden.

(Inherited from Component)

События

Disposed Disposed Disposed Disposed

Происходит при удалении компонента вызовом метода Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)

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

Дополнительно