Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

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.Object
  System.MarshalByRefObject
    System.ComponentModel.Component
      System.ServiceProcess.ServiceBase

Namespace:  System.ServiceProcess
Assembly:  System.ServiceProcess (in System.ServiceProcess.dll)
public class ServiceBase : Component

Der ServiceBase-Typ macht die folgenden Member verfügbar.

  Name Beschreibung
Öffentliche Methode ServiceBase Erstellt eine neue Instanz der ServiceBase-Klasse.
Zum Seitenanfang
  Name Beschreibung
Öffentliche Eigenschaft AutoLog Gibt an, ob die Befehle Starten, Beenden, Anhalten und Fortsetzen im Ereignisprotokoll aufgezeichnet werden sollen.
Öffentliche Eigenschaft CanHandlePowerEvent Ruft einen Wert ab, der angibt, ob der Dienst Benachrichtigungen über Änderungen im Energiestatus des Computers verarbeiten kann, oder legt diesen fest.
Öffentliche Eigenschaft CanHandleSessionChangeEvent Ruft einen Wert ab, der angibt, ob der Dienst Sitzungsänderungsereignisse aus einer Terminal Server-Sitzung behandeln kann, oder legt diesen fest.
Öffentliche Eigenschaft CanPauseAndContinue Ruft einen Wert ab, der angibt, ob der Dienst angehalten und wieder aufgenommen werden kann, oder legt diesen fest.
Geschützte Eigenschaft CanRaiseEvents Ruft einen Wert ab, der angibt, ob die Komponente ein Ereignis auslösen kann. (Von Component geerbt.)
Öffentliche Eigenschaft CanShutdown Ruft einen Wert ab, der angibt, ob der Dienst beim Herunterfahren des Systems benachrichtigt werden soll, oder legt diesen fest.
Öffentliche Eigenschaft CanStop Ruft einen Wert ab, der angibt, ob der Dienst nach dem Starten beendet werden kann, oder legt diesen fest.
Öffentliche Eigenschaft Container Ruft den IContainer ab, der die Component enthält. (Von Component geerbt.)
Geschützte Eigenschaft DesignMode Ruft einen Wert ab, der angibt, ob sich Component gegenwärtig im Entwurfsmodus befindet. (Von Component geerbt.)
Öffentliche Eigenschaft EventLog Ruft ein Ereignisprotokoll ab, mit dem Sie Benachrichtigungen über Aufrufe von Dienstbefehlen wie Starten und Beenden in das Anwendungsereignisprotokoll schreiben können.
Geschützte Eigenschaft Events Ruft die Liste der Ereignishandler ab, die dieser Component angefügt sind. (Von Component geerbt.)
Öffentliche Eigenschaft ExitCode Ruft den Exitcode für den Dienst ab oder legt diesen fest.
Geschützte Eigenschaft ServiceHandle Ruft das Dienststeuerungshandle für den Dienst ab.
Öffentliche Eigenschaft ServiceName Ruft den zur Bezeichnung des Diensts beim System verwendeten kurzen Namen ab oder legt diesen fest.
Öffentliche Eigenschaft Site Ruft die ISite der Component ab oder legt diese fest. (Von Component geerbt.)
Zum Seitenanfang
  Name Beschreibung
Öffentliche Methode 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.)
Öffentliche Methode Dispose() Gibt sämtliche von der Component verwendeten Ressourcen frei. (Von Component geerbt.)
Geschützte Methode Dispose(Boolean) Gibt die von ServiceBase verwendeten Ressourcen (mit Ausnahme des Speichers) frei. (Überschreibt Component.Dispose(Boolean).)
Öffentliche Methode Equals(Object) Bestimmt, ob das angegebene Object und das aktuelle Object gleich sind. (Von Object geerbt.)
Geschützte Methode 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.)
Öffentliche Methode GetHashCode Fungiert als Hashfunktion für einen bestimmten Typ. (Von Object geerbt.)
Öffentliche Methode GetLifetimeService Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien für diese Instanz steuert. (Von MarshalByRefObject geerbt.)
Geschützte Methode GetService Gibt ein Objekt zurück, das einen von der Component oder von deren Container bereitgestellten Dienst darstellt. (Von Component geerbt.)
Öffentliche Methode GetType Ruft den Type der aktuellen Instanz ab. (Von Object geerbt.)
Öffentliche Methode InitializeLifetimeService Ruft ein Lebensdauerdienstobjekt ab, mit dem die Lebensdauerrichtlinien für diese Instanz gesteuert werden können. (Von MarshalByRefObject geerbt.)
Geschützte Methode MemberwiseClone() Erstellt eine flache Kopie des aktuellen Object. (Von Object geerbt.)
Geschützte Methode MemberwiseClone(Boolean) Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Von MarshalByRefObject geerbt.)
Geschützte Methode 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.
Geschützte Methode 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.
Geschützte Methode 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.
Geschützte Methode 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.
Geschützte Methode OnSessionChange Wird ausgeführt, wenn ein Änderungsereignis von einer Terminal Server-Sitzung empfangen wird.
Geschützte Methode 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.
Geschützte Methode 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.
Geschützte Methode 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.
Öffentliche Methode RequestAdditionalTime Fordert zusätzliche Zeit für eine ausstehende Operation an.
Öffentliche Methode Statischer Member Run(ServiceBase) Registriert die ausführbare Datei für einen Dienst im Dienststeuerungs-Manager.
Öffentliche Methode Statischer Member Run(ServiceBase[]) Registriert die ausführbare Datei für mehrere Dienste im Dienststeuerungs-Manager.
Öffentliche Methode ServiceMainCallback Infrastruktur. Registriert den Befehlshandler und startet den Dienst.
Öffentliche Methode Stop Beendet den ausgeführten Dienst.
Öffentliche Methode ToString Gibt einen String zurück, der den Namen dieser Component enthält, sofern vorhanden. Diese Methode sollte nicht überschrieben werden. (Von Component geerbt.)
Zum Seitenanfang
  Name Beschreibung
Öffentliches Ereignis Disposed Tritt ein, wenn die Komponente durch einen Aufruf der Dispose-Methode freigegeben wird. (Von Component geerbt.)
Zum Seitenanfang
  Name Beschreibung
Öffentliches Feld Statischer Member MaxNameLength Gibt die maximale Größe für einen Dienstnamen an.
Zum Seitenanfang

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 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.

.NET Framework

Unterstützt in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

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.
Alle öffentlichen static (Shared in Visual Basic)-Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Community-Inhalt Hinzufügen
Anmerkungen FAQ