Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. |
Übersetzung
Original
|
ServiceBase-Klasse
Stellt eine Basisklasse für einen Dienst als Teil einer Dienstanwendung bereit. ServiceBase muss abgeleitet werden, wenn eine neue Dienstklasse erstellt wird.
System.MarshalByRefObject
System.ComponentModel.Component
System.ServiceProcess.ServiceBase
Assembly: System.ServiceProcess (in System.ServiceProcess.dll)
Der ServiceBase-Typ macht die folgenden Member verfügbar.
| Name | Beschreibung | |
|---|---|---|
|
AutoLog | Gibt an, ob die Befehle Starten, Beenden, Anhalten und Fortsetzen im Ereignisprotokoll aufgezeichnet werden sollen. |
|
CanHandlePowerEvent | Ruft einen Wert ab, der angibt, ob der Dienst Benachrichtigungen über Änderungen im Energiestatus des Computers verarbeiten kann, oder legt diesen fest. |
|
CanHandleSessionChangeEvent | Ruft einen Wert ab, der angibt, ob der Dienst Sitzungsänderungsereignisse aus einer Terminal Server-Sitzung behandeln kann, oder legt diesen fest. |
|
CanPauseAndContinue | Ruft einen Wert ab, der angibt, ob der Dienst angehalten und wieder aufgenommen werden kann, oder legt diesen fest. |
|
CanRaiseEvents | Ruft einen Wert ab, der angibt, ob die Komponente ein Ereignis auslösen kann. (Von Component geerbt.) |
|
CanShutdown | Ruft einen Wert ab, der angibt, ob der Dienst beim Herunterfahren des Systems benachrichtigt werden soll, oder legt diesen fest. |
|
CanStop | Ruft einen Wert ab, der angibt, ob der Dienst nach dem Starten beendet werden kann, oder legt diesen fest. |
|
Container | Ruft den IContainer ab, der die Component enthält. (Von Component geerbt.) |
|
DesignMode | Ruft einen Wert ab, der angibt, ob sich Component gegenwärtig im Entwurfsmodus befindet. (Von Component geerbt.) |
|
EventLog | Ruft ein Ereignisprotokoll ab, mit dem Sie Benachrichtigungen über Aufrufe von Dienstbefehlen wie Starten und Beenden in das Anwendungsereignisprotokoll schreiben können. |
|
Events | Ruft die Liste der Ereignishandler ab, die dieser Component angefügt sind. (Von Component geerbt.) |
|
ExitCode | Ruft den Exitcode für den Dienst ab oder legt diesen fest. |
|
ServiceHandle | Ruft das Dienststeuerungshandle für den Dienst ab. |
|
ServiceName | Ruft den zur Bezeichnung des Diensts beim System verwendeten kurzen Namen ab oder legt diesen fest. |
|
Site | Ruft die ISite der Component ab oder legt diese fest. (Von Component geerbt.) |
| Name | Beschreibung | |
|---|---|---|
|
CreateObjRef | Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind. (Von MarshalByRefObject geerbt.) |
|
Dispose() | Gibt sämtliche von der Component verwendeten Ressourcen frei. (Von Component geerbt.) |
|
Dispose(Boolean) | Gibt die von ServiceBase verwendeten Ressourcen (mit Ausnahme des Speichers) frei. (Überschreibt Component.Dispose(Boolean).) |
|
Equals(Object) | Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.) |
|
Finalize | Gibt nicht verwaltete Ressourcen frei und führt andere Bereinigungsvorgänge durch, bevor die Component durch die Garbage Collection wieder zugänglich gemacht wird. (Von Component geerbt.) |
|
GetHashCode | Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.) |
|
GetLifetimeService | Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. (Von MarshalByRefObject geerbt.) |
|
GetService | Gibt ein Objekt zurück, das einen von der Component oder von deren Container bereitgestellten Dienst darstellt. (Von Component geerbt.) |
|
GetType | Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.) |
|
InitializeLifetimeService | Ruft ein Lebensdauerdienstobjekt ab, mit dem die Lebensdauerrichtlinien für diese Instanz gesteuert werden können. (Von MarshalByRefObject geerbt.) |
|
MemberwiseClone() | Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.) |
|
MemberwiseClone(Boolean) | Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Von MarshalByRefObject geerbt.) |
|
OnContinue | Bei der Implementierung in einer abgeleiteten Klasse wird OnContinue ausgeführt, wenn der Dienststeuerungs-Manager einen Befehl zum Fortsetzen an den Dienst sendet. Gibt Aktionen an, die durchgeführt werden müssen, wenn der normale Betrieb eines Diensts nach dem Anhalten wieder aufgenommen wird. |
|
OnCustomCommand | Bei der Implementierung in einer abgeleiteten Klasse wird OnCustomCommand ausgeführt, wenn der Dienststeuerungs-Manager einen benutzerdefinierten Befehl an den Dienst übergibt. Gibt an, welche Aktionen auszuführen sind, wenn ein Befehl mit dem angegebenen Parameter auftritt. |
|
OnPause | Wird bei der Implementierung in einer abgeleiteten Klasse ausgeführt, wenn der Dienststeuerungs-Manager einen Befehl zum Anhalten an den Dienst sendet. Gibt Aktionen an, die beim Anhalten eines Diensts durchgeführt werden müssen. |
|
OnPowerEvent | Wird bei der Implementierung in einer abgeleiteten Klasse ausgeführt, wenn sich der Energiestatus des Computers geändert hat. Dies gilt für Laptops, wenn diese in den Standbymodus wechseln. Dieser entspricht nicht dem Herunterfahren des Systems. |
|
OnSessionChange | Wird ausgeführt, wenn ein Änderungsereignis von einer Terminal Server-Sitzung empfangen wird. |
|
OnShutdown | Wird bei der Implementierung in einer abgeleiteten Klasse beim Herunterfahren des Systems ausgeführt. Gibt an, welche Vorgänge unmittelbar vor dem Herunterfahren des Systems ausgeführt werden sollen. |
|
OnStart | 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). Gibt Aktionen an, die beim Starten des Diensts ausgeführt werden müssen. |
|
OnStop | Wird bei der Implementierung in einer abgeleiteten Klasse ausgeführt, wenn der Dienststeuerungs-Manager einen Befehl zum Beenden an den Dienst sendet. Gibt Aktionen an, die beim Beenden eines Diensts auszuführen sind. |
|
RequestAdditionalTime | Fordert zusätzliche Zeit für eine ausstehende Operation an. |
|
Run(ServiceBase) | Registriert die ausführbare Datei für einen Dienst im Dienststeuerungs-Manager. |
|
Run(ServiceBase[]) | Registriert die ausführbare Datei für mehrere Dienste im Dienststeuerungs-Manager. |
|
ServiceMainCallback | Infrastruktur. Registriert den Befehlshandler und startet den Dienst. |
|
Stop | Beendet den ausgeführten Dienst. |
|
ToString | Gibt einen String zurück, der den Namen dieser Component enthält, sofern vorhanden. Diese Methode sollte nicht überschrieben werden. (Von Component geerbt.) |
| Name | Beschreibung | |
|---|---|---|
|
Disposed | Tritt ein, wenn die Komponente durch einen Aufruf der Dispose-Methode freigegeben wird. (Von Component geerbt.) |
Leiten Sie ServiceBase ab, wenn Sie Ihre Dienstklasse in einer Dienstanwendung definieren. Die OnStart-Methode und die OnStop-Methode werden von allen funktionalen Diensten überschrieben. Um weitere Funktionen zu erhalten, können Sie als Reaktion auf Änderungen im Dienstzustand OnPause und OnContinue mit einem bestimmten Verhalten überschreiben.
Bei einem Dienst handelt es sich um ein Programm im Dauerbetrieb, das keine Benutzeroberfläche unterstützt und möglicherweise nicht unter dem angemeldeten Benutzerkonto ausgeführt wird. Ein Dienst kann ausgeführt werden, ohne dass ein Benutzer am Computer angemeldet ist.
Standardmäßig werden Dienste unter dem Systemkonto des Computers ausgeführt. Dieses ist nicht mit dem Administratorkonto identisch. Die Rechte des Systemkontos können nicht geändert werden. Sie können auch mit ServiceProcessInstaller ein Benutzerkonto festlegen, unter dem der Dienst ausgeführt werden soll.
Eine ausführbare Datei kann mehrere Dienste enthalten, dabei muss allerdings jeweils ein eigener ServiceInstaller vorhanden sein. Die ServiceInstaller-Instanz meldet den Dienst beim System an. Das Installationsprogramm ordnet jedem Dienst ein Ereignisprotokoll zu, das zur Aufzeichnung von Dienstbefehlen verwendet werden kann. Die main()-Funktion in der ausführbaren Datei definiert, welche Dienste ausgeführt werden sollen. Das aktuelle Arbeitsverzeichnis des Diensts ist das Systemverzeichnis und nicht das Verzeichnis, in dem sich die ausführbare Datei befindet.
Beim Starten eines Diensts sucht das System die ausführbare Datei und führt die OnStart-Methode des Diensts aus, die in der ausführbaren Datei enthalten ist. Es besteht jedoch ein Unterschied zwischen dem Ausführen des Diensts und dem Ausführen der Programmdatei. Die Programmdatei lädt den Dienst lediglich. Auf den Dienst wird über den Dienststeuerungs-Manager zugegriffen (z. B. zum Starten oder Beenden).
Die ausführbare Datei ruft den Konstruktor der von ServiceBase abgeleiteten Klasse auf, sobald Sie für den Dienst Start aufrufen. Die OnStart-Methode zur Befehlsbehandlung wird unmittelbar nach dem Ausführen des Konstruktors aufgerufen. Der Konstruktor wird nach dem ersten Laden des Diensts nicht mehr ausgeführt. Deshalb müssen die vom Konstruktor ausgeführten Verarbeitungsvorgänge von den durch OnStart ausgeführten getrennt werden. Alle Ressourcen, die durch OnStop freigegeben werden können, müssen in OnStart erstellt werden. Durch Erstellen von Ressourcen im Konstruktor wird verhindert, dass diese ordnungsgemäß erstellt werden, wenn nach der Freigabe der Ressourcen durch OnStop der Dienst erneut gestartet wird.
Der Dienststeuerungs-Manager stellt eine Möglichkeit für die Interaktion mit dem Dienst bereit. Sie können mit dem Dienststeuerungs-Manager die Befehle Starten, Beenden, Anhalten und Fortsetzen sowie benutzerdefinierte Befehle an den Dienst übergeben. Der Dienststeuerungs-Manager bestimmt anhand der Werte von CanStop und CanPauseAndContinue, ob der Dienst die Befehle Beenden, Anhalten oder Fortsetzen zulässt. Beenden, Anhalten und Fortsetzen sind nur dann in den Kontextmenüs des Dienststeuerungs-Managers aktiviert, wenn CanStop oder CanPauseAndContinue der entsprechenden Eigenschaft in der Dienstklasse true ist. Wenn der Befehl aktiviert ist, wird er an den Dienst übergeben, und es wird OnStop, OnPause oder OnContinue aufgerufen. Wenn CanStop, CanShutdown oder CanPauseAndContinue den Wert false hat, wird die entsprechende Methode zur Befehlsbehandlung (z. B. OnStop) nicht verarbeitet, selbst wenn Sie diese implementiert haben.
Sie können mit der ServiceController-Klasse programmgesteuert die Tasks ausführen, die der Dienststeuerungs-Manager mithilfe der Benutzeroberfläche ausführt. Sie können die in der Konsole verfügbaren Aufgaben automatisieren. Wenn CanStop, CanShutdown oder CanPauseAndContinue den Wert true hat, jedoch keine entsprechende Methode zur Befehlsbehandlung (z. B. OnStop) implementiert ist, löst das System eine Ausnahme aus und ignoriert den Befehl.
Es ist nicht erforderlich, OnStart, OnStop oder eine andere Methode in ServiceBase zu implementieren. Das Verhalten des Diensts wird jedoch in OnStart beschrieben, deshalb muss zumindest dieser Member überschrieben werden. Die main()-Funktion der ausführbaren Datei registriert den Dienst in der ausführbaren Datei im Dienststeuerungs-Manager durch Aufrufen der Run-Methode. Die an die Run-Methode übergebene ServiceName-Eigenschaft des ServiceBase-Objekts muss der ServiceName-Eigenschaft des Dienstinstallationsprogramms für den betreffenden Dienst entsprechen.
Sie können mit InstallUtil.exe Dienste im System installieren.
Hinweis
|
|---|
|
Sie können für Benachrichtigungen über Aufrufe von Diensten ein anderes Protokoll als das Anwendungsereignisprotokoll angeben, die AutoLog-Eigenschaft und die EventLog-Eigenschaft können jedoch nicht in ein benutzerdefiniertes Protokoll geschrieben werden. Legen Sie AutoLog auf false fest, wenn keine automatische Protokollierung ausgeführt werden soll. |
Windows 7, Windows Vista SP1 oder höher, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core wird nicht unterstützt), Windows Server 2008 R2 (Server Core wird mit SP1 oder höher unterstützt), Windows Server 2003 SP2
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Hinweis