ServiceBase ServiceBase ServiceBase ServiceBase Class

Définition

Fournit une classe de base pour un service qui fera partie d'une application de service.Provides a base class for a service that will exist as part of a service application. ServiceBase doit être dérivé lors de la création d'une classe de service.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
Héritage
Dérivé

Remarques

Dérivez de ServiceBase lors de la définition de votre classe de service dans une application de service.Derive from ServiceBase when defining your service class in a service application. Tout service utile remplace les OnStart méthodes et. OnStopAny useful service overrides the OnStart and OnStop methods. Pour obtenir des fonctionnalités supplémentaires, vous pouvez OnPause remplacer OnContinue et avec un comportement spécifique en réponse à des modifications de l’état du service.For additional functionality, you can override OnPause and OnContinue with specific behavior in response to changes in the service state.

Un service est un exécutable à durée d’exécution longue qui ne prend pas en charge une interface utilisateur et qui peut ne pas s’exécuter sous le compte d’utilisateur connecté.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. Le service peut s’exécuter sans qu’aucun utilisateur n’ait ouvert une session sur l’ordinateur.The service can run without any user being logged on to the computer.

Par défaut, les services s’exécutent sous le compte système, qui n’est pas le même que le compte administrateur.By default, services run under the System account, which is not the same as the Administrator account. Vous ne pouvez pas modifier les droits du compte système.You cannot change the rights of the System account. Vous pouvez également utiliser un ServiceProcessInstaller pour spécifier un compte d’utilisateur sous lequel le service s’exécutera.Alternatively, you can use a ServiceProcessInstaller to specify a user account under which the service will run.

Un exécutable peut contenir plusieurs services, mais il doit contenir un distinct ServiceInstaller pour chaque service.An executable can contain more than one service but must contain a separate ServiceInstaller for each service. L' ServiceInstaller instance inscrit le service auprès du système.The ServiceInstaller instance registers the service with the system. Le programme d’installation associe également chaque service à un journal des événements que vous pouvez utiliser pour enregistrer des commandes de service.The installer also associates each service with an event log that you can use to record service commands. La main() fonction dans l’exécutable définit les services qui doivent s’exécuter.The main() function in the executable defines which services should run. Le répertoire de travail actuel du service est le répertoire système, et non le répertoire dans lequel se trouve l’exécutable.The current working directory of the service is the system directory, not the directory in which the executable is located.

Lorsque vous démarrez un service, le système localise l’exécutable et exécute la OnStart méthode pour ce service, contenue dans l’exécutable.When you start a service, the system locates the executable and runs the OnStart method for that service, contained within the executable. Toutefois, l’exécution du service n’est pas la même que l’exécution de l’exécutable.However, running the service is not the same as running the executable. L’exécutable charge uniquement le service.The executable only loads the service. Le service est accessible (par exemple, démarré et arrêté) par le biais du gestionnaire de contrôle des services.The service is accessed (for example, started and stopped) through the Service Control Manager.

L’exécutable appelle le ServiceBase constructeur de la classe dérivée la première fois que vous appelez Start sur le service.The executable calls the ServiceBase derived class's constructor the first time you call Start on the service. La OnStart méthode de gestion de commande est appelée immédiatement après l’exécution du constructeur.The OnStart command-handling method is called immediately after the constructor executes. Le constructeur n’est pas exécuté à nouveau après le chargement du service pour la première fois. il est donc nécessaire de séparer le traitement effectué par le constructeur de celui OnStartexécuté par.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. Toutes les ressources qui peuvent être libérées par OnStop doivent être créées dans. OnStartAny resources that can be released by OnStop should be created in OnStart. La création de ressources dans le constructeur empêche leur création correcte si le service est redémarré après OnStop que a libéré les ressources.Creating resources in the constructor prevents them from being created properly if the service is started again after OnStop has released the resources.

Le gestionnaire de contrôle des services (SCM) offre un moyen d’interagir avec le service.The Service Control Manager (SCM) provides a way to interact with the service. Vous pouvez utiliser le SCM pour transmettre des commandes de démarrage, d’arrêt, de suspension, de poursuite ou personnalisées au service.You can use the SCM to pass Start, Stop, Pause, Continue, or custom commands into the service. Le SCM utilise les valeurs de CanStop et CanPauseAndContinue pour déterminer si le service accepte les commandes arrêter, suspendre ou continuer.The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. Arrêter, suspendre et continuer sont activés dans les menus contextuels de SCM uniquement si la CanStop propriété CanPauseAndContinue correspondante true ou se trouve dans la classe de service.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. S’il est activé, la commande est transmise au service OnStop, OnPauseet, OnContinue ou est appelé.If enabled, the command is passed to the service, and OnStop, OnPause, or OnContinue is called. Si CanStop, CanShutdownou alafalseforme, la méthode de gestion de commande correspondante ( OnStoptelle que) ne sera pas traitée, même si vous avez implémenté la méthode. CanPauseAndContinueIf 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.

Vous pouvez utiliser la ServiceController classe pour effectuer par programmation ce que fait le SCM à l’aide d’une interface utilisateur.You can use the ServiceController class to do programmatically what the SCM does using a user interface. Vous pouvez automatiser les tâches disponibles dans la console.You can automate the tasks available in the console. Si CanStop, CanShutdownou estCanPauseAndContinue OnStop, mais que vous n’avez pas implémenté de méthode de gestion de commande correspondante (telle que), le système lève une exception et ignore la commande. trueIf 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.

Vous n’avez pas à OnStartimplémenter OnStop, ou toute autre méthode dans ServiceBase.You do not have to implement OnStart, OnStop, or any other method in ServiceBase. Toutefois, le comportement du service est décrit dans OnStart, donc au minimum, ce membre doit être substitué.However, the service's behavior is described in OnStart, so at minimum, this member should be overridden. La main() fonction de l’exécutable inscrit le service dans l’exécutable auprès du gestionnaire de contrôle des services en appelant la Run méthode.The main() function of the executable registers the service in the executable with the Service Control Manager by calling the Run method. La ServiceName propriété de l' ServiceBase objet passé à la Run méthode doit correspondre à ServiceName la propriété du programme d’installation du service pour ce service.The ServiceName property of the ServiceBase object passed to the Run method must match the ServiceName property of the service installer for that service.

Vous pouvez utiliser InstallUtil.exe pour installer des services sur votre système.You can use InstallUtil.exe to install services on your system.

Notes

Vous pouvez spécifier un journal autre que le journal des événements de l’application pour recevoir la notification des appels de AutoLog service, EventLog mais ni la propriété ni la propriété ne peuvent écrire dans un journal personnalisé.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. Affectez la valeur AutoLog sivousnesouhaitezpasutiliserlajournalisationautomatique.falseSet AutoLog to false if you do not want to use automatic logging.

Constructeurs

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

Crée une instance de la classe ServiceBase.Creates a new instance of the ServiceBase class.

Champs

MaxNameLength MaxNameLength MaxNameLength MaxNameLength

Indique la taille maximale d'un nom de service.Indicates the maximum size for a service name.

Propriétés

AutoLog AutoLog AutoLog AutoLog

Indique s'il faut signaler les commandes Démarrer, Arrêter, Suspendre et Continuer dans le journal des événements.Indicates whether to report Start, Stop, Pause, and Continue commands in the event log.

CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent

Obtient ou définit une valeur qui indique si le service peut gérer les notifications de changement d'état de l'alimentation de l'ordinateur.Gets or sets a value indicating whether the service can handle notifications of computer power status changes.

CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent

Obtient ou définit une valeur indiquant si le service peut gérer les événements de modification de session envoyés à partir d'une session Terminal Server.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

Obtient ou définit une valeur indiquant si le service accepte les pauses et les reprises.Gets or sets a value indicating whether the service can be paused and resumed.

CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

Obtient une valeur qui indique si le composant peut déclencher un événement.Gets a value indicating whether the component can raise an event.

(Inherited from Component)
CanShutdown CanShutdown CanShutdown CanShutdown

Obtient ou définit une valeur indiquant si le service doit être averti de l'arrêt du système.Gets or sets a value indicating whether the service should be notified when the system is shutting down.

CanStop CanStop CanStop CanStop

Obtient ou définit une valeur indiquant si le service peut être arrêté une fois qu'il a démarré.Gets or sets a value indicating whether the service can be stopped once it has started.

Container Container Container Container

Obtient le IContainer qui contient Component.Gets the IContainer that contains the Component.

(Inherited from Component)
DesignMode DesignMode DesignMode DesignMode

Obtient une valeur qui indique si Component est actuellement en mode design.Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
EventLog EventLog EventLog EventLog

Obtient un journal des événements que vous pouvez utiliser pour écrire la notification des appels de commande de service comme Démarrer et Arrêter dans le journal des événements de l'application.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

Obtient la liste des gestionnaires d'événements attachés à ce Component.Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
ExitCode ExitCode ExitCode ExitCode

Obtient ou définit le code de sortie du service.Gets or sets the exit code for the service.

ServiceHandle ServiceHandle ServiceHandle ServiceHandle

Obtient le handle du contrôle du service.Gets the service control handle for the service.

ServiceName ServiceName ServiceName ServiceName

Obtient ou définit le nom court utilisé pour identifier le service sur le système.Gets or sets the short name used to identify the service to the system.

Site Site Site Site

Obtient ou définit le ISite de Component.Gets or sets the ISite of the Component.

(Inherited from Component)

Méthodes

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

Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant.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()

Libère toutes les ressources utilisées par Component.Releases all resources used by the Component.

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

Libère les ressources (autres que la mémoire) utilisées par ServiceBase.Disposes of the resources (other than memory) used by the ServiceBase.

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

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

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

Fait office de fonction de hachage par défaut.Serves as the default hash function.

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

Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance.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)

Retourne un objet qui représente un service fourni par Component ou par son Container.Returns an object that represents a service provided by the Component or by its Container.

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

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

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

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.Obtains a lifetime service object to control the lifetime policy for this instance.

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

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

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

Crée une copie superficielle de l'objet MarshalByRefObject actuel.Creates a shallow copy of the current MarshalByRefObject object.

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

Si elle est implémentée dans une classe dérivée, la méthode OnContinue() s'exécute lorsqu'une commande Continuer est envoyée au service par le Gestionnaire de contrôle des services (SCM).When implemented in a derived class, OnContinue() runs when a Continue command is sent to the service by the Service Control Manager (SCM). Spécifie les actions à effectuer lorsqu'un service reprend son fonctionnement normal après avoir été suspendu.Specifies actions to take when a service resumes normal functioning after being paused.

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

Si elle est implémentée dans une classe dérivée, la méthode OnCustomCommand(Int32) s'exécute lorsque le Gestionnaire de contrôle des services (SCM) passe une commande personnalisée au service.When implemented in a derived class, OnCustomCommand(Int32) executes when the Service Control Manager (SCM) passes a custom command to the service. Spécifie les actions à effectuer lorsqu'une commande a la valeur de paramètre spécifiée.Specifies actions to take when a command with the specified parameter value occurs.

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

Si elle est implémentée dans une classe dérivée, cette méthode s'exécute lorsqu'une commande Suspendre est envoyée au service par le Gestionnaire de contrôle des services (SCM).When implemented in a derived class, executes when a Pause command is sent to the service by the Service Control Manager (SCM). Spécifie les actions à effectuer lorsqu'un service est suspendu.Specifies actions to take when a service pauses.

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

Si cette méthode est implémentée dans une classe dérivée, elle s'exécute lorsque l'alimentation de l'ordinateur change d'état.When implemented in a derived class, executes when the computer's power status has changed. Cela concerne les ordinateurs portables lorsqu'ils passent en mode suspendu (différent d'un arrêt du système).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)

S'exécute lorsqu'un événement de modification est reçu d'une session Terminal Server.Executes when a change event is received from a Terminal Server session.

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

Si cette méthode est implémentée dans une classe dérivée, elle s'exécute lorsque le système s'arrête.When implemented in a derived class, executes when the system is shutting down. Spécifie ce qui doit se produire juste avant l'arrêt du système.Specifies what should occur immediately prior to the system shutting down.

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

Si elle est implémentée dans une classe dérivée, cette méthode s'exécute lorsqu'une commande Démarrer est envoyée au service par le Gestionnaire de contrôle des services (SCM) ou lorsque le système d'exploitation démarre (pour un service qui démarre automatiquement).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). Spécifie les actions à effectuer lorsque le service démarre.Specifies actions to take when the service starts.

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

Si elle est implémentée dans une classe dérivée, cette méthode s'exécute lorsqu'une commande Arrêter est envoyée au service par le Gestionnaire de contrôle des services (SCM).When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). Spécifie les actions à effectuer lorsqu'un service cesse de s'exécuter.Specifies actions to take when a service stops running.

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

Demande la durée supplémentaire d'une opération en attente.Requests additional time for a pending operation.

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

Inscrit l'exécutable d'un service à l'aide du Gestionnaire de contrôle des services.Registers the executable for a service with the Service Control Manager (SCM).

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

Inscrit l'exécutable de plusieurs services à l'aide du Gestionnaire de contrôle des services.Registers the executable for multiple services with the Service Control Manager (SCM).

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

Inscrit le gestionnaire de commandes et démarre le service.Registers the command handler and starts the service.

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

Arrête le service en cours d'exécution.Stops the executing service.

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

Retourne un String contenant le nom du Component, s’il en existe un.Returns a String containing the name of the Component, if any. Cette méthode ne doit pas être remplacée.This method should not be overridden.

(Inherited from Component)

Événements

Disposed Disposed Disposed Disposed

Se produit lorsque le composant est supprimé par un appel à la méthode Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)

S’applique à

Voir aussi