Teilen über


ServiceBase Klasse

Definition

Stellt eine Basisklasse für einen Dienst bereit, der als Teil einer Dienstanwendung vorhanden ist. ServiceBase muss beim Erstellen einer neuen Dienstklasse abgeleitet werden.

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 beim Definieren der Dienstklasse in einer Dienstanwendung ab ServiceBase . Alle nützlichen Dienste überschreiben die OnStart und OnStop Methoden. Für zusätzliche Funktionen können Sie als Reaktion auf Änderungen des Dienstzustands ein bestimmtes Verhalten außer Kraft setzen OnPause und OnContinue mit diesem verhalten.

Ein Dienst ist eine ausführbare Datei mit langer Ausführung, die keine Benutzeroberfläche unterstützt und möglicherweise nicht unter dem angemeldeten Benutzerkonto ausgeführt wird. Der Dienst kann ausgeführt werden, ohne dass ein Benutzer am Computer angemeldet ist.

Standardmäßig werden Dienste unter dem Systemkonto ausgeführt, was nicht mit dem Administratorkonto identisch ist. Sie können die Rechte des Systemkontos nicht ändern. Alternativ können Sie ein ServiceProcessInstaller Benutzerkonto angeben, unter dem der Dienst ausgeführt wird.

Eine ausführbare Datei kann mehrere Dienste enthalten, muss jedoch für jeden Dienst eine separate ServiceInstaller Datei enthalten. Die ServiceInstaller Instanz registriert den Dienst beim System. Das Installationsprogramm ordnet jeden Dienst auch einem Ereignisprotokoll zu, das Sie zum Aufzeichnen von Dienstbefehlen verwenden können. Die main() Funktion in der ausführbaren Datei definiert, welche Dienste ausgeführt werden sollen. Das aktuelle Arbeitsverzeichnis des Diensts ist das Systemverzeichnis, nicht das Verzeichnis, in dem sich die ausführbare Datei befindet.

Wenn Sie einen Dienst starten, sucht das System die ausführbare Datei und führt die OnStart Methode für diesen Dienst aus, die in der ausführbaren Datei enthalten ist. Das Ausführen des Diensts ist jedoch nicht mit dem Ausführen der ausführbaren Datei identisch. Die ausführbare Datei lädt nur den Dienst. Auf den Dienst wird über den Dienststeuerungs-Manager zugegriffen (z. B. gestartet und beendet).

Die ausführbare Datei ruft den Konstruktor der abgeleiteten Klasse beim ersten Aufruf von ServiceBase Start für den Dienst auf. Die OnStart Befehlsbehandlungsmethode wird unmittelbar nach ausführung des Konstruktors aufgerufen. Der Konstruktor wird nach dem ersten Laden des Diensts nicht erneut ausgeführt, daher ist es erforderlich, die vom Konstruktor ausgeführte Verarbeitung von dieser aufgabe OnStartzu trennen. Alle Ressourcen, die freigegeben OnStop werden können, sollten erstellt werden in OnStart. Durch das Erstellen von Ressourcen im Konstruktor wird verhindert, dass sie ordnungsgemäß erstellt werden, wenn der Dienst erneut gestartet wird, nachdem OnStop die Ressourcen freigegeben wurden.

Der Dienststeuerungs-Manager (Service Control Manager, SCM) bietet eine Möglichkeit, mit dem Dienst zu interagieren. Sie können den SCM verwenden, um Start-, Stopp-, Pause-, Continue- oder benutzerdefinierte Befehle an den Dienst zu übergeben. Der SCM verwendet die Werte und CanStopCanPauseAndContinue bestimmt, ob der Dienst Stopp-, Pause- oder Fortsetzungsbefehle akzeptiert. "Stop", "Pause" und "Continue" sind in den Kontextmenüs von SCM nur aktiviert, wenn sich die entsprechende Eigenschaft CanStop oder CanPauseAndContinue in der Dienstklasse befindet true . Wenn diese Option aktiviert ist, wird der Befehl an den Dienst übergeben und OnStopOnPause, oder OnContinue wird aufgerufen. CanShutdownIst CanStopdie CanPauseAndContinuefalseentsprechende Befehlsbehandlungsmethode (zOnStop. B. ) nicht verarbeitet, auch wenn Sie die Methode implementiert haben.

Sie können die ServiceController Klasse verwenden, um programmgesteuert zu tun, was der SCM über eine Benutzeroberfläche ausführt. Sie können die in der Konsole verfügbaren Aufgaben automatisieren. Wenn CanStop, CanShutdownoder CanPauseAndContinue ist true , aber Sie keine entsprechende Befehlsbehandlungsmethode (z OnStop. B. ) implementiert haben, löst das System eine Ausnahme aus und ignoriert den Befehl.

Sie müssen keine andere Methode in OnStartOnStopServiceBase. Das Verhalten des Diensts wird jedoch in OnStartbeschrieben, daher sollte dieses Element mindestens überschrieben werden. Die main() Funktion der ausführbaren Datei registriert den Dienst in der ausführbaren Datei mit dem Dienststeuerungs-Manager, indem die Run Methode aufgerufen wird. Die ServiceName Eigenschaft des objekts, das ServiceBase an die Run Methode übergeben wird, muss mit der ServiceName Eigenschaft des Dienstinstallationsprogramms für diesen Dienst übereinstimmen.

Sie können den sc create Befehl verwenden, um Dienste zu installieren, die auf moderne .NET abzielen, oder InstallUtil.exe dienste, die auf .NET Framework abzielen.

Hinweis

Sie können ein anderes Protokoll als das Anwendungsereignisprotokoll angeben, um Benachrichtigungen über Dienstaufrufe zu erhalten, aber weder die Eigenschaft noch die AutoLogEventLog Eigenschaft kann in ein benutzerdefiniertes Protokoll schreiben. Legen Sie diesen AutoLogfalse Wert fest, wenn Sie die automatische Protokollierung nicht verwenden möchten.

Konstruktoren

Name Beschreibung
ServiceBase()

Erstellt eine neue Instanz der ServiceBase Klasse.

Felder

Name Beschreibung
MaxNameLength

Gibt die maximale Größe für einen Dienstnamen an.

Eigenschaften

Name Beschreibung
AutoLog

Gibt an, ob Befehle "Start", "Stopp", "Anhalten" und "Weiter" im Ereignisprotokoll angezeigt werden sollen.

CanHandlePowerEvent

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der Dienst Benachrichtigungen über Computerleistungsstatusänderungen verarbeiten kann.

CanHandleSessionChangeEvent

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der Dienst Sitzungsänderungsereignisse verarbeiten kann, die von einer Terminalserversitzung empfangen werden.

CanPauseAndContinue

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der Dienst angehalten und fortgesetzt werden kann.

CanRaiseEvents

Ruft einen Wert ab, der angibt, ob die Komponente ein Ereignis auslösen kann.

(Geerbt von Component)
CanShutdown

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der Dienst benachrichtigt werden soll, wenn das System heruntergefahren wird.

CanStop

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der Dienst nach dem Starten beendet werden kann.

Container

Ruft das, das IContainer die Component.

(Geerbt von Component)
DesignMode

Ruft einen Wert ab, der angibt, ob sich der Component Entwurfsmodus derzeit befindet.

(Geerbt von Component)
EventLog

Ruft ein Ereignisprotokoll ab, mit dem Sie Benachrichtigungen über Dienstbefehlsaufrufe wie Start und Stop in das Anwendungsereignisprotokoll schreiben können.

Events

Ruft die Liste der Ereignishandler ab, die an diese Componentangefügt sind.

(Geerbt von Component)
ExitCode

Dient zum Abrufen oder Festlegen des Exitcodes für den Dienst.

ServiceHandle

Ruft das Dienststeuerungshandle für den Dienst ab.

ServiceName

Ruft den kurzen Namen ab, der zum Identifizieren des Diensts für das System verwendet wird, oder legt diesen fest.

Site

Dient zum ISite Abrufen oder Festlegen des Werts des Component.

(Geerbt von Component)

Methoden

Name Beschreibung
CreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird.

(Geerbt von MarshalByRefObject)
Dispose()

Veröffentlicht alle ressourcen, die von der Component.

(Geerbt von Component)
Dispose(Boolean)

Entfernt die ressourcen (außer Arbeitsspeicher), die von der ServiceBase.

Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetLifetimeService()
Veraltet.

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinie für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetService(Type)

Gibt ein Objekt zurück, das einen Dienst darstellt, der von der Component oder dem zugehörigen ContainerDienst bereitgestellt wird.

(Geerbt von Component)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
InitializeLifetimeService()
Veraltet.

Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern.

(Geerbt von MarshalByRefObject)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject Objekts.

(Geerbt von MarshalByRefObject)
OnContinue()

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ausgeführt, OnContinue() wenn ein Befehl "Weiter" vom Dienststeuerungs-Manager (Service Control Manager, SCM) an den Dienst gesendet wird. Gibt Aktionen an, die ausgeführt werden sollen, wenn ein Dienst nach der Pause wieder normal funktioniert.

OnCustomCommand(Int32)

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ausgeführt, OnCustomCommand(Int32) wenn der Dienststeuerungs-Manager (Service Control Manager, SCM) einen benutzerdefinierten Befehl an den Dienst übergibt. Gibt Aktionen an, die ausgeführt werden sollen, wenn ein Befehl mit dem angegebenen Parameterwert auftritt.

OnPause()

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ausgeführt, wenn ein Pause-Befehl vom Dienststeuerungs-Manager (Service Control Manager, SCM) an den Dienst gesendet wird. Gibt Aktionen an, die ausgeführt werden sollen, wenn ein Dienst angehalten wird.

OnPowerEvent(PowerBroadcastStatus)

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ausgeführt, wenn sich der Stromstatus des Computers geändert hat. Dies gilt für Laptopcomputer, wenn sie in den angehaltenen Modus wechseln, was nicht mit dem Herunterfahren des Systems übereinstimmt.

OnSessionChange(SessionChangeDescription)

Wird ausgeführt, wenn ein Änderungsereignis von einer Terminalserversitzung empfangen wird.

OnShutdown()

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ausgeführt, wenn das System heruntergefahren wird. Gibt an, was unmittelbar vor dem Herunterfahren des Systems auftreten soll.

OnStart(String[])

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ausgeführt, wenn ein Startbefehl vom Service Control Manager (SCM) an den Dienst gesendet wird oder wenn das Betriebssystem gestartet wird (für einen Dienst, der automatisch gestartet wird). Gibt Aktionen an, die ausgeführt werden sollen, wenn der Dienst gestartet wird.

OnStop()

Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ausgeführt, wenn ein Stop-Befehl vom Service Control Manager (SCM) an den Dienst gesendet wird. Gibt Aktionen an, die ausgeführt werden sollen, wenn ein Dienst beendet wird.

RequestAdditionalTime(Int32)

Fordert zusätzliche Zeit für einen ausstehenden Vorgang an.

RequestAdditionalTime(TimeSpan)

Wenn diese Methode von OnStart, OnStop, OnPause oder OnContinue aufgerufen wird, wird der angegebene Wartehinweis an den Dienststeuerungs-Manager übergeben, um zu vermeiden, dass der Dienst als nicht reagiert.

Run(ServiceBase)

Registriert die ausführbare Datei für einen Dienst beim Service Control Manager (SCM).

Run(ServiceBase[])

Registriert die ausführbare Datei für mehrere Dienste beim Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr)

Registriert den Befehlshandler und startet den Dienst.

Stop()

Beendet den ausgeführten Dienst.

ToString()

Gibt einen String mit dem Namen des Component, falls vorhanden, zurück. Diese Methode sollte nicht außer Kraft gesetzt werden.

(Geerbt von Component)

Ereignisse

Name Beschreibung
Disposed

Tritt auf, wenn die Komponente durch einen Aufruf der Dispose() Methode verworfen wird.

(Geerbt von Component)

Gilt für:

Weitere Informationen