Partager via


ServiceBase Classe

Définition

Fournit une classe de base pour un service qui fera partie d'une application de service. ServiceBase doit être dérivé lors de la création d'une classe de service.

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 lors de la définition de ServiceBase votre classe de service dans une application de service. Tout service utile remplace les OnStart méthodes et OnStop . Pour des fonctionnalités supplémentaires, vous pouvez remplacer OnPause et OnContinue avec un comportement spécifique en réponse aux modifications de l’état du service.

Un service est un exécutable de longue durée qui ne prend pas en charge une interface utilisateur et qui peut ne pas s’exécuter sous le compte d’utilisateur connecté. Le service peut s’exécuter sans qu’aucun utilisateur ne soit connecté à l’ordinateur.

Par défaut, les services s’exécutent sous le compte système, qui n’est pas identique au compte administrateur. Vous ne pouvez pas modifier les droits du compte système. Vous pouvez également utiliser un pour spécifier un compte d’utilisateur ServiceProcessInstaller sous lequel le service s’exécutera.

Un exécutable peut contenir plusieurs services, mais doit contenir un autre ServiceInstaller pour chaque service. Le ServiceInstaller instance inscrit le service auprès du système. Le programme d’installation associe également chaque service à un journal des événements que vous pouvez utiliser pour enregistrer des commandes de service. La main() fonction dans l’exécutable définit les services qui doivent s’exécuter. 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.

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. Toutefois, l’exécution du service n’est pas identique à l’exécution de l’exécutable. L’exécutable charge uniquement le service. Le service est accessible (par exemple, démarré et arrêté) via le Gestionnaire de contrôle de service.

L’exécutable appelle le constructeur de la ServiceBase classe dérivée la première fois que vous appelez Start sur le service. La OnStart méthode de gestion des commandes est appelée immédiatement après l’exécution du constructeur. Le constructeur n’étant pas réexécuté après la première fois que le service a été chargé, il est nécessaire de séparer le traitement effectué par le constructeur de celui effectué par OnStart. Toutes les ressources qui peuvent être libérées par OnStop doivent être créées dans OnStart. La création de ressources dans le constructeur empêche leur création correctement si le service est redémarr après OnStop avoir libéré les ressources.

Le Gestionnaire de contrôle de service (SCM) permet d’interagir avec le service. Vous pouvez utiliser le SCM pour passer des commandes Démarrer, Arrêter, Suspendre, Continuer ou personnalisées dans le service. Le SCM utilise les valeurs de CanStop et CanPauseAndContinue pour déterminer si le service accepte les commandes Arrêter, Suspendre ou Continuer. Arrêter, Suspendre et Continuer sont activés dans les menus contextuels du SCM uniquement si la propriété CanStop correspondante ou CanPauseAndContinue se trouve true dans la classe de service. Si cette option est activée, la commande est passée au service et OnStop, OnPauseou OnContinue est appelée. Si CanStop, CanShutdownou CanPauseAndContinue est false, la méthode de gestion des commandes correspondante (telle que OnStop) n’est pas traitée, même si vous avez implémenté la méthode.

Vous pouvez utiliser la ServiceController classe pour effectuer par programmation ce que fait le SCM à l’aide d’une interface utilisateur. Vous pouvez automatiser les tâches disponibles dans la console. Si CanStop, CanShutdownou CanPauseAndContinue est true mais que vous n’avez pas implémenté de méthode de gestion des commandes correspondante (telle que OnStop) le système lève une exception et ignore la commande.

Vous n’avez pas besoin d’implémenter OnStart, OnStopou toute autre méthode dans ServiceBase. Toutefois, le comportement du service est décrit dans OnStart, donc au minimum, ce membre doit être remplacé. La main() fonction de l’exécutable inscrit le service dans l’exécutable auprès du Gestionnaire de contrôle de service en appelant la Run méthode . La ServiceName propriété de l’objet ServiceBase passé à la Run méthode doit correspondre à la ServiceName propriété du programme d’installation du service pour ce service.

Vous pouvez utiliser InstallUtil.exe pour installer des services sur votre système.

Notes

Vous pouvez spécifier un journal autre que le journal des événements d’application pour recevoir la notification des appels de service, mais ni la AutoLog propriété ni ne EventLog peut écrire dans un journal personnalisé. Définissez AutoLog sur false si vous ne souhaitez pas utiliser la journalisation automatique.

Constructeurs

ServiceBase()

Crée une instance de la classe ServiceBase.

Champs

MaxNameLength

Indique la taille maximale d'un nom de service.

Propriétés

AutoLog

Indique s'il faut signaler les commandes Démarrer, Arrêter, Suspendre et Continuer dans le journal des événements.

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.

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.

CanPauseAndContinue

Obtient ou définit une valeur indiquant si le service accepte les pauses et les reprises.

CanRaiseEvents

Obtient une valeur qui indique si le composant peut déclencher un événement.

(Hérité de Component)
CanShutdown

Obtient ou définit une valeur indiquant si le service doit être averti de l'arrêt du système.

CanStop

Obtient ou définit une valeur indiquant si le service peut être arrêté une fois qu'il a démarré.

Container

Obtient le IContainer qui contient la Component.

(Hérité de Component)
DesignMode

Obtient une valeur qui indique si Component est actuellement en mode design.

(Hérité de Component)
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.

Events

Obtient la liste des gestionnaires d'événements attachés à ce Component.

(Hérité de Component)
ExitCode

Obtient ou définit le code de sortie du service.

ServiceHandle

Obtient le handle du contrôle du service.

ServiceName

Obtient ou définit le nom court utilisé pour identifier le service sur le système.

Site

Obtient ou définit le ISite de Component.

(Hérité de Component)

Méthodes

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.

(Hérité de MarshalByRefObject)
Dispose()

Libère toutes les ressources utilisées par Component.

(Hérité de Component)
Dispose(Boolean)

Libère les ressources (autres que la mémoire) utilisées par ServiceBase.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetLifetimeService()
Obsolète.

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.

(Hérité de MarshalByRefObject)
GetService(Type)

Retourne un objet qui représente un service fourni par Component ou par son Container.

(Hérité de Component)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l'objet MarshalByRefObject actuel.

(Hérité de MarshalByRefObject)
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). Spécifie les actions à effectuer lorsqu'un service reprend son fonctionnement normal après avoir été suspendu.

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. Spécifie les actions à effectuer lorsqu'une commande a la valeur de paramètre spécifiée.

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). Spécifie les actions à effectuer lorsqu'un service est suspendu.

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. Cela concerne les ordinateurs portables lorsqu'ils passent en mode suspendu (différent d'un arrêt du système).

OnSessionChange(SessionChangeDescription)

S'exécute lorsqu'un événement de modification est reçu d'une session Terminal Server.

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. Spécifie ce qui doit se produire juste avant l'arrêt du système.

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). Spécifie les actions à effectuer lorsque le service démarre.

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). Spécifie les actions à effectuer lorsqu'un service cesse de s'exécuter.

RequestAdditionalTime(Int32)

Demande la durée supplémentaire d'une opération en attente.

RequestAdditionalTime(TimeSpan)

Lorsque cette méthode est appelée à partir de OnStart, OnStop, OnPause ou OnContinue, l’indicateur d’attente spécifié est passé au Gestionnaire de contrôle de service pour éviter que le service ne soit marqué comme ne répondant pas.

Run(ServiceBase)

Inscrit l'exécutable d'un service à l'aide du Gestionnaire de contrôle des services.

Run(ServiceBase[])

Inscrit l'exécutable de plusieurs services à l'aide du Gestionnaire de contrôle des services.

ServiceMainCallback(Int32, IntPtr)

Inscrit le gestionnaire de commandes et démarre le service.

Stop()

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

ToString()

Retourne un String contenant le nom du Component, s’il en existe un. Cette méthode ne doit pas être remplacée.

(Hérité de Component)

Événements

Disposed

Se produit lorsque le composant est supprimé par un appel à la méthode Dispose().

(Hérité de Component)

S’applique à

Voir aussi