ServiceBase ServiceBase ServiceBase ServiceBase Class

Definition

Stellt eine Basisklasse für einen Dienst als Teil einer Dienstanwendung bereit.Provides a base class for a service that will exist as part of a service application. ServiceBase muss abgeleitet werden, wenn eine neue Dienstklasse erstellt wird.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
Vererbung
Abgeleitet

Hinweise

Leiten Sie ServiceBase von ab, wenn Sie die Dienstklasse in einer Dienst Anwendung definieren.Derive from ServiceBase when defining your service class in a service application. Jeder nützliche Dienst überschreibt die OnStart - OnStop Methode und die-Methode.Any useful service overrides the OnStart and OnStop methods. Um zusätzliche Funktionen zu erhalten, können OnPause Sie OnContinue und mit spezifischem Verhalten in Reaktion auf Änderungen im Dienststatus überschreiben.For additional functionality, you can override OnPause and OnContinue with specific behavior in response to changes in the service state.

Bei einem Dienst handelt es sich um eine ausführbare Datei mit langer Laufzeit, die keine Benutzeroberfläche unterstützt und die möglicherweise nicht unter dem angemeldeten Benutzerkonto ausgeführt wird.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. Der Dienst kann ausgeführt werden, ohne dass ein Benutzer am Computer angemeldet ist.The service can run without any user being logged on to the computer.

Dienste werden standardmäßig unter dem System Konto ausgeführt, das nicht mit dem Administrator Konto identisch ist.By default, services run under the System account, which is not the same as the Administrator account. Die Rechte des System Kontos können nicht geändert werden.You cannot change the rights of the System account. Alternativ können Sie einen ServiceProcessInstaller verwenden, um ein Benutzerkonto anzugeben, unter dem der-Dienst ausgeführt wird.Alternatively, you can use a ServiceProcessInstaller to specify a user account under which the service will run.

Eine ausführbare Datei kann mehr als einen Dienst enthalten, muss jedoch ServiceInstaller für jeden Dienst einen separaten enthalten.An executable can contain more than one service but must contain a separate ServiceInstaller for each service. Die ServiceInstaller Instanz registriert den Dienst beim System.The ServiceInstaller instance registers the service with the system. Das Installationsprogramm verknüpft jeden Dienst auch mit einem Ereignisprotokoll, das Sie zum Aufzeichnen von Dienst Befehlen verwenden können.The installer also associates each service with an event log that you can use to record service commands. Die main() -Funktion in der ausführbaren Datei definiert, welche Dienste ausgeführt werden sollen.The main() function in the executable defines which services should run. Das aktuelle Arbeitsverzeichnis des Dienstanbieter ist das System Verzeichnis, nicht das Verzeichnis, in dem sich die ausführbare Datei befindet.The current working directory of the service is the system directory, not the directory in which the executable is located.

Wenn Sie einen Dienst starten, sucht das System die ausführbare Datei und führt OnStart die-Methode für diesen Dienst aus, der in der ausführbaren Datei enthalten ist.When you start a service, the system locates the executable and runs the OnStart method for that service, contained within the executable. Das Ausführen des Dienstanbieter ist jedoch nicht identisch mit dem Ausführen der ausführbaren Datei.However, running the service is not the same as running the executable. Die ausführbare Datei lädt nur den Dienst.The executable only loads the service. Der Zugriff auf den Dienst erfolgt (z. b. gestartet und beendet) über den Dienststeuerungs-Manager.The service is accessed (for example, started and stopped) through the Service Control Manager.

Die ausführbare Datei ServiceBase Ruft den Konstruktor der abgeleiteten Klasse auf, wenn Sie zum ersten Mal auf dem Dienst aufrufen.The executable calls the ServiceBase derived class's constructor the first time you call Start on the service. Die OnStart Befehls Behandlungsmethode wird unmittelbar nach der Ausführung des Konstruktors aufgerufen.The OnStart command-handling method is called immediately after the constructor executes. Der Konstruktor wird nach dem ersten Laden des dienstaners nicht erneut ausgeführt. Daher ist es erforderlich, die Verarbeitung, die vom-Konstruktor durchgeführt wird, von OnStartder durchgeführten zu trennen.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. Alle Ressourcen, die von OnStop freigegeben werden können, sollten in OnStarterstellt werden.Any resources that can be released by OnStop should be created in OnStart. Durch das Erstellen von Ressourcen im Konstruktor wird verhindert, dass Sie ordnungsgemäß erstellt werden, wenn OnStop der Dienst nach der Freigabe der Ressourcen erneut gestartet wird.Creating resources in the constructor prevents them from being created properly if the service is started again after OnStop has released the resources.

Der Dienststeuerungs-Manager (SCM) bietet eine Möglichkeit, mit dem Dienst zu interagieren.The Service Control Manager (SCM) provides a way to interact with the service. Sie können den SCM verwenden, um Befehle zum Starten, anhalten, anhalten, fortsetzen oder benutzerdefinierte Befehle an den Dienst zu übergeben.You can use the SCM to pass Start, Stop, Pause, Continue, or custom commands into the service. Der SCM verwendet die Werte von CanStop und CanPauseAndContinue , um zu bestimmen, ob der Dienst Befehle zum Anhalten, anhalten oder fortsetzen akzeptiert.The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. "Anhalten", "anhalten" und "Fortfahren" werden nur dann in den Kontextmenüs CanStop von CanPauseAndContinue SCM true aktiviert, wenn sich die entsprechende Eigenschaft oder in der Dienstklasse befindet.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. Wenn diese Option aktiviert ist, wird der-Befehl an den OnStop- OnPauseDienst und OnContinue , oder aufgerufen.If enabled, the command is passed to the service, and OnStop, OnPause, or OnContinue is called. Wenn CanStop, CanShutdownoder ist,falsewird die entsprechende Befehls Behandlungsmethode (z OnStop. b.) nicht verarbeitet, auch wenn Sie die-Methode implementiert haben. 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.

Sie können die ServiceController -Klasse verwenden, um Programm gesteuert zu tun, was der SCM mithilfe einer Benutzeroberfläche bewirkt.You can use the ServiceController class to do programmatically what the SCM does using a user interface. Sie können die Aufgaben automatisieren, die in der-Konsole verfügbar sind.You can automate the tasks available in the console. Wenn CanStop, CanShutdownoder ist,true Sie aberOnStopkeine entsprechende Befehls Behandlungsmethode (z. b.) implementiert haben, löst das System eine Ausnahme aus und ignoriert den Befehl. CanPauseAndContinueIf 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.

Sie müssen nicht, OnStart OnStopoder eine andere Methode in ServiceBaseimplementieren.You do not have to implement OnStart, OnStop, or any other method in ServiceBase. Das Verhalten des Dienstanbieter wird jedoch in OnStartbeschrieben. Daher sollte dieser Member zumindest überschrieben werden.However, the service's behavior is described in OnStart, so at minimum, this member should be overridden. Die main() Funktion der ausführbaren Datei registriert den Dienst in der ausführbaren Datei mit dem Dienststeuerungs- Run Manager, indem die-Methode aufgerufen wird.The main() function of the executable registers the service in the executable with the Service Control Manager by calling the Run method. Die ServiceName -Eigenschaft ServiceBase des-Objekts, das Run an die-Methode ServiceName übergebenen wird, muss mit der-Eigenschaft des Dienst Installationsprogramms für den betreffenden DienstThe ServiceName property of the ServiceBase object passed to the Run method must match the ServiceName property of the service installer for that service.

Sie können verwenden InstallUtil.exe , um-Dienste auf Ihrem System zu installieren.You can use InstallUtil.exe to install services on your system.

Hinweis

Sie können ein anderes Protokoll als das Anwendungs Ereignisprotokoll angeben, um Benachrichtigungen über Dienst Aufrufe zu erhalten, aber AutoLog weder die EventLog -noch die-Eigenschaft kann in ein benutzerdefiniertes Protokoll schreiben.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. Legen AutoLog Sie false diese Einstellung auf fest, wenn die automatische Protokollierung nicht verwendet werden soll.Set AutoLog to false if you do not want to use automatic logging.

Konstruktoren

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

Erstellt eine neue Instanz der ServiceBase-Klasse.Creates a new instance of the ServiceBase class.

Felder

MaxNameLength MaxNameLength MaxNameLength MaxNameLength

Gibt die maximale Größe für einen Dienstnamen an.Indicates the maximum size for a service name.

Eigenschaften

AutoLog AutoLog AutoLog AutoLog

Gibt an, ob die Befehle Starten, Beenden, Anhalten und Fortsetzen im Ereignisprotokoll aufgezeichnet werden sollen.Indicates whether to report Start, Stop, Pause, and Continue commands in the event log.

CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent

Ruft einen Wert ab, der angibt, ob der Dienst Benachrichtigungen über Änderungen im Energiestatus des Computers verarbeiten kann, oder legt diesen fest.Gets or sets a value indicating whether the service can handle notifications of computer power status changes.

CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent

Ruft einen Wert ab, der angibt, ob der Dienst Sitzungsänderungsereignisse aus einer Terminal Server-Sitzung behandeln kann, oder legt diesen fest.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

Ruft einen Wert ab, der angibt, ob der Dienst angehalten und wieder aufgenommen werden kann, oder legt diesen fest.Gets or sets a value indicating whether the service can be paused and resumed.

CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

Ruft einen Wert ab, der angibt, ob die Komponente ein Ereignis auslösen kann.Gets a value indicating whether the component can raise an event.

(Inherited from Component)
CanShutdown CanShutdown CanShutdown CanShutdown

Ruft einen Wert ab, der angibt, ob der Dienst beim Herunterfahren des Systems benachrichtigt werden soll, oder legt diesen fest.Gets or sets a value indicating whether the service should be notified when the system is shutting down.

CanStop CanStop CanStop CanStop

Ruft einen Wert ab, der angibt, ob der Dienst nach dem Starten beendet werden kann, oder legt diesen fest.Gets or sets a value indicating whether the service can be stopped once it has started.

Container Container Container Container

Ruft den IContainer ab, der die Component enthält.Gets the IContainer that contains the Component.

(Inherited from Component)
DesignMode DesignMode DesignMode DesignMode

Ruft einen Wert ab, der angibt, ob sich Component gegenwärtig im Entwurfsmodus befindet.Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
EventLog EventLog EventLog EventLog

Ruft ein Ereignisprotokoll ab, mit dem Sie Benachrichtigungen über Aufrufe von Dienstbefehlen wie Starten und Beenden in das Anwendungsereignisprotokoll schreiben können.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

Ruft die Liste der Ereignishandler ab, die dieser Component angefügt sind.Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
ExitCode ExitCode ExitCode ExitCode

Ruft den Exitcode für den Dienst ab oder legt diesen fest.Gets or sets the exit code for the service.

ServiceHandle ServiceHandle ServiceHandle ServiceHandle

Ruft das Dienststeuerungshandle für den Dienst ab.Gets the service control handle for the service.

ServiceName ServiceName ServiceName ServiceName

Ruft den zur Bezeichnung des Diensts beim System verwendeten kurzen Namen ab oder legt diesen fest.Gets or sets the short name used to identify the service to the system.

Site Site Site Site

Ruft den ISite von Component ab oder legt ihn fest.Gets or sets the ISite of the Component.

(Inherited from Component)

Methoden

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

Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind.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()

Gibt alle vom Component verwendeten Ressourcen frei.Releases all resources used by the Component.

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

Gibt die von der ServiceBase-Klasse verwendeten Ressourcen (mit Ausnahme des Speichers) frei.Disposes of the resources (other than memory) used by the ServiceBase.

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

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

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

Fungiert als Standardhashfunktion.Serves as the default hash function.

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

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert.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)

Gibt ein Objekt zurück, das einen von der Component oder von deren Container bereitgestellten Dienst darstellt.Returns an object that represents a service provided by the Component or by its Container.

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

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

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

Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab.Obtains a lifetime service object to control the lifetime policy for this instance.

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

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

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

Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts.Creates a shallow copy of the current MarshalByRefObject object.

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

Bei der Implementierung in einer abgeleiteten Klasse wird OnContinue() ausgeführt, wenn der Dienststeuerungs-Manager einen Befehl zum Fortsetzen an den Dienst sendet.When implemented in a derived class, OnContinue() runs when a Continue command is sent to the service by the Service Control Manager (SCM). Gibt Aktionen an, die durchgeführt werden müssen, wenn der normale Betrieb eines Diensts nach dem Anhalten wieder aufgenommen wird.Specifies actions to take when a service resumes normal functioning after being paused.

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

Bei der Implementierung in einer abgeleiteten Klasse wird OnCustomCommand(Int32) ausgeführt, wenn der Dienststeuerungs-Manager einen benutzerdefinierten Befehl an den Dienst übergibt.When implemented in a derived class, OnCustomCommand(Int32) executes when the Service Control Manager (SCM) passes a custom command to the service. Gibt an, welche Aktionen auszuführen sind, wenn ein Befehl mit dem angegebenen Parameter auftritt.Specifies actions to take when a command with the specified parameter value occurs.

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

Wird bei der Implementierung in einer abgeleiteten Klasse ausgeführt, wenn der Dienststeuerungs-Manager einen Befehl zum Anhalten an den Dienst sendet.When implemented in a derived class, executes when a Pause command is sent to the service by the Service Control Manager (SCM). Gibt Aktionen an, die beim Anhalten eines Diensts durchgeführt werden müssen.Specifies actions to take when a service pauses.

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

Wird bei der Implementierung in einer abgeleiteten Klasse ausgeführt, wenn sich der Energiestatus des Computers geändert hat.When implemented in a derived class, executes when the computer's power status has changed. Dies gilt für Laptops, wenn diese in den Standbymodus wechseln. Dieser entspricht nicht dem Herunterfahren des Systems.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)

Wird ausgeführt, wenn ein Änderungsereignis von einer Terminal Server-Sitzung empfangen wird.Executes when a change event is received from a Terminal Server session.

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

Wird bei der Implementierung in einer abgeleiteten Klasse beim Herunterfahren des Systems ausgeführt.When implemented in a derived class, executes when the system is shutting down. Gibt an, welche Vorgänge unmittelbar vor dem Herunterfahren des Systems ausgeführt werden sollen.Specifies what should occur immediately prior to the system shutting down.

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

Wird bei der Implementierung in einer abgeleiteten Klasse ausgeführt, wenn der Dienststeuerungs-Manager einen Befehl zum Starten an den Dienst sendet oder wenn das Betriebssystem gestartet wird (diese gilt für Dienste, die automatisch gestartet werden).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). Gibt Aktionen an, die beim Starten des Diensts ausgeführt werden müssen.Specifies actions to take when the service starts.

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

Wird bei der Implementierung in einer abgeleiteten Klasse ausgeführt, wenn der Dienststeuerungs-Manager einen Befehl zum Beenden an den Dienst sendet.When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). Gibt Aktionen an, die beim Beenden eines Diensts auszuführen sind.Specifies actions to take when a service stops running.

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

Fordert zusätzliche Zeit für eine ausstehende Operation an.Requests additional time for a pending operation.

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

Registriert die ausführbare Datei für einen Dienst im Dienststeuerungs-Manager.Registers the executable for a service with the Service Control Manager (SCM).

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

Registriert die ausführbare Datei für mehrere Dienste im Dienststeuerungs-Manager.Registers the executable for multiple services with the Service Control Manager (SCM).

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

Registriert den Befehlshandler und startet den Dienst.Registers the command handler and starts the service.

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

Beendet den ausgeführten Dienst.Stops the executing service.

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

Gibt einen String zurück, der den Namen der Component enthält (sofern vorhanden).Returns a String containing the name of the Component, if any. Diese Methode darf nicht überschrieben werden.This method should not be overridden.

(Inherited from Component)

Ereignisse

Disposed Disposed Disposed Disposed

Tritt ein, wenn die Komponente durch einen Aufruf der Dispose()-Methode freigegeben wird.Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)

Gilt für:

Siehe auch