Sdílet prostřednictvím


ServiceBase Třída

Definice

Poskytuje základní třídu pro službu, která bude existovat jako součást aplikace služby. ServiceBase musí být odvozen od při vytváření nové třídy služby.

public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
    inherit Component
Public Class ServiceBase
Inherits Component
Dědičnost
Odvozené

Poznámky

Odvozeno z ServiceBase při definování třídy služby v aplikaci služby. Jakákoli užitečná služba přepíše OnStart metody a OnStop . Pro další funkce můžete přepsat OnPause a OnContinue s konkrétním chováním v reakci na změny stavu služby.

Služba je dlouhotrvající spustitelný soubor, který nepodporuje uživatelské rozhraní a který nemusí běžet pod přihlášeným uživatelským účtem. Služba může běžet bez přihlášení uživatele k počítači.

Ve výchozím nastavení se služby spouští pod systémovým účtem, který není stejný jako účet správce. Nemůžete změnit práva systémového účtu. Alternativně můžete použít k ServiceProcessInstaller určení uživatelského účtu, pod kterým bude služba spuštěna.

Spustitelný soubor může obsahovat více než jednu službu, ale musí obsahovat samostatnou ServiceInstaller pro každou službu. Instance ServiceInstaller zaregistruje službu v systému. Instalační program také přidruží každou službu k protokolu událostí, který můžete použít k záznamu příkazů služby. Funkce main() ve spustitelném souboru definuje, které služby se mají spustit. Aktuálním pracovním adresářem služby je systémový adresář, nikoli adresář, ve kterém se nachází spustitelný soubor.

Při spuštění služby systém vyhledá spustitelný soubor a spustí metodu OnStart pro tuto službu obsaženou ve spustitelném souboru. Spuštění služby ale není totéž jako spuštění spustitelného souboru. Spustitelný soubor načte pouze službu. Služba je přístupná (například spuštěná a zastavená) prostřednictvím Správce řízení služeb.

Spustitelný soubor volá ServiceBase konstruktor odvozené třídy při prvním volání startu ve službě. Metoda OnStart zpracování příkazů je volána ihned po spuštění konstruktoru. Konstruktor se po prvním načtení služby znovu nespustí, takže je nutné oddělit zpracování prováděné konstruktorem od zpracování prováděného nástrojem OnStart. Všechny prostředky, které může uvolnit, OnStop by měly být vytvořeny v nástroji OnStart. Vytvoření prostředků v konstruktoru zabrání jejich správnému vytvoření, pokud je služba znovu spuštěna po OnStop uvolnění prostředků.

Správce řízení služeb (SCM) poskytuje způsob, jak se službou pracovat. Pomocí SCM můžete do služby předat příkazy Start, Stop, Pause, Continue nebo vlastní příkazy. SCM používá hodnoty CanStop a CanPauseAndContinue k určení, jestli služba přijímá příkazy Stop, Pause nebo Continue. Funkce Stop, Pause a Continue jsou v kontextových nabídkách SCM povoleny pouze v případě, že je odpovídající vlastnost CanStop nebo CanPauseAndContinue je true ve třídě služby. Pokud je povoleno, příkaz se předá službě a OnStopzavolá se , OnPausenebo OnContinue . Pokud CanStop, CanShutdownnebo CanPauseAndContinue je false, odpovídající metoda zpracování příkazů (například OnStop) se nezpracuje, a to ani v případě, že jste implementovali metodu.

Pomocí třídy můžete ServiceController programově provádět to, co SCM dělá pomocí uživatelského rozhraní. Úlohy dostupné v konzole můžete automatizovat. Pokud CanStop, CanShutdownnebo CanPauseAndContinue je true , ale neimplementovali jste odpovídající metodu zpracování příkazů (například OnStop), systém vyvolá výjimku a ignoruje příkaz.

V nástroji není nutné implementovat OnStart, OnStopani žádnou jinou metodu .ServiceBase Chování služby je však popsáno v OnStartsouboru , takže minimálně by měl být tento člen přepsán. Funkce main() spustitelného souboru registruje službu ve spustitelném souboru pomocí Správce řízení služeb voláním Run metody. Vlastnost ServiceName objektu ServiceBase předaná metodě Run se musí shodovat ServiceName s vlastností instalačního programu služby pro danou službu.

Můžete použít InstallUtil.exe k instalaci služeb do systému.

Poznámka

Můžete zadat jiný protokol než protokol událostí aplikace pro příjem oznámení o volání služby, ale ani AutoLogEventLog vlastnost nemůže zapisovat do vlastního protokolu. Pokud nechcete používat automatické protokolování, nastavte AutoLog na false hodnotu .

Konstruktory

ServiceBase()

Vytvoří novou instanci třídy ServiceBase.

Pole

MaxNameLength

Určuje maximální velikost názvu služby.

Vlastnosti

AutoLog

Určuje, jestli se mají v protokolu událostí hlásit příkazy Start, Stop, Pause a Continue.

CanHandlePowerEvent

Získá nebo nastaví hodnotu určující, zda služba může zpracovávat oznámení o změnách stavu napájení počítače.

CanHandleSessionChangeEvent

Získá nebo nastaví hodnotu, která označuje, zda služba může zpracovávat události změny relace přijaté z relace terminálového serveru.

CanPauseAndContinue

Získá nebo nastaví hodnotu označující, zda lze službu pozastavit a obnovit.

CanRaiseEvents

Získá hodnotu označující, zda komponenta může vyvolat událost.

(Zděděno od Component)
CanShutdown

Získá nebo nastaví hodnotu určující, zda má být služba upozorněna při vypnutí systému.

CanStop

Získá nebo nastaví hodnotu označující, zda služba může být zastavena po spuštění.

Container

Získá objekt IContainer , který obsahuje Component.

(Zděděno od Component)
DesignMode

Získá hodnotu, která označuje, zda je aktuálně v režimu návrhu Component .

(Zděděno od Component)
EventLog

Získá protokol událostí, který můžete použít k zápisu oznámení o voláních příkazů služby, jako je spuštění a zastavení, do protokolu událostí aplikace.

Events

Získá seznam obslužných rutin událostí, které jsou připojeny k tomuto Component.

(Zděděno od Component)
ExitCode

Získá nebo nastaví ukončovací kód pro službu.

ServiceHandle

Získá popisovač řízení služby pro službu.

ServiceName

Získá nebo nastaví krátký název použitý k identifikaci služby systému.

Site

Získá nebo nastaví ISite hodnotu Component.

(Zděděno od Component)

Metody

CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy používaného ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
Dispose()

Uvolní všechny prostředky používané nástrojem Component.

(Zděděno od Component)
Dispose(Boolean)

Odstraní prostředky (jiné než paměť) používané objektem ServiceBase.

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetLifetimeService()
Zastaralé.

Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetService(Type)

Vrátí objekt, který představuje službu poskytovanou objektem Component nebo jejím Containerobjektem .

(Zděděno od Component)
GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
InitializeLifetimeService()
Zastaralé.

Získá objekt služby životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
OnContinue()

Při implementaci v odvozené třídě se spustí, OnContinue() když správce řízení služeb (SCM) odešle do služby příkaz Pokračovat. Určuje akce, které se mají provést, když služba po pozastavení obnoví normální fungování.

OnCustomCommand(Int32)

Při implementaci v odvozené třídě provede, OnCustomCommand(Int32) když Správce řízení služeb (SCM) předá vlastní příkaz službě. Určuje akce, které se mají provést, když dojde k příkazu se zadanou hodnotou parametru.

OnPause()

Při implementaci v odvozené třídě se spustí, když správce řízení služeb (SCM) odešle do služby příkaz Pozastavit. Určuje akce, které se mají provést při pozastavení služby.

OnPowerEvent(PowerBroadcastStatus)

Při implementaci v odvozené třídě provede při změně stavu napájení počítače. To platí pro přenosné počítače, které přejdou do pozastaveného režimu, což není totéž jako vypnutí systému.

OnSessionChange(SessionChangeDescription)

Spustí se při přijetí události změny z relace terminálového serveru.

OnShutdown()

Při implementaci v odvozené třídě provede při vypnutí systému. Určuje, co by mělo nastat bezprostředně před vypnutím systému.

OnStart(String[])

Při implementaci v odvozené třídě se spustí při odeslání příkazu Start do služby správcem řízení služeb (SCM) nebo při spuštění operačního systému (pro službu, která se spouští automaticky). Určuje akce, které se mají provést při spuštění služby.

OnStop()

Při implementaci v odvozené třídě se spustí při odeslání příkazu Stop do služby správcem řízení služeb (SCM). Určuje akce, které se mají provést, když se služba zastaví.

RequestAdditionalTime(Int32)

Vyžádá si další čas pro čekající operaci.

RequestAdditionalTime(TimeSpan)

Pokud je tato metoda volána z OnStart, OnStop, OnPause nebo OnContinue, předá se určený čekací nápověda správce řízení služeb, aby se zabránilo označení služby jako nereaguje.

Run(ServiceBase)

Zaregistruje spustitelný soubor pro službu pomocí Správce řízení služeb (SCM).

Run(ServiceBase[])

Zaregistruje spustitelný soubor pro více služeb pomocí Správce řízení služeb (SCM).

ServiceMainCallback(Int32, IntPtr)

Zaregistruje obslužnou rutinu příkazu a spustí službu.

Stop()

Zastaví spuštěnou službu.

ToString()

String Vrátí hodnotu obsahující název Component, pokud existuje. Tato metoda by neměla být přepsána.

(Zděděno od Component)

Událost

Disposed

Nastane, když je komponenta odstraněna voláním Dispose() metody.

(Zděděno od Component)

Platí pro

Viz také