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

Odvozujte od ServiceBase definování třídy služby v aplikaci služby. Každá užitečná služba přepisuje OnStart metody a OnStop metody. Další funkce můžete přepsat OnPause a OnContinue s konkrétním chováním v reakci na změny ve 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. Práva systémového účtu nelze změnit. Alternativně můžete použít ServiceProcessInstaller k 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 pro každou službu musí obsahovat samostatný ServiceInstaller soubor. 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 by se měly spouštět. Aktuální pracovní adresář služby je systémový adresář, nikoli adresář, ve kterém se nachází spustitelný soubor.

Když spustíte službu, 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í stejné 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í Start ve službě. OnStart Metoda zpracování příkazů se volá okamžitě po spuštění konstruktoru. Konstruktor se po prvním načtení služby znovu nespustí, takže je nutné oddělit zpracování provedené konstruktorem od konstruktoru, který provedl OnStart. Všechny prostředky, které lze vydat OnStop , by měly být vytvořeny v OnStartsouboru . Vytváření prostředků v konstruktoru brání jejich správnému vytvoření, pokud je služba znovu spuštěna po OnStop vydání prostředků.

Správce řízení služeb (SCM) poskytuje způsob interakce se službou. SCM můžete použít k předání příkazů Start, Stop, Pause, Continue nebo vlastních příkazů do služby. SCM používá hodnoty CanStop a CanPauseAndContinue určuje, jestli služba přijímá příkazy Stop, Pause nebo Continue. Funkce Stop, Pause a Continue jsou povolená v kontextových nabídkách SCM pouze v případě, že je odpovídající vlastnost CanStop nebo CanPauseAndContinue je true ve třídě služby. Pokud je tato možnost povolená, příkaz se předá službě a OnStopOnPause, nebo OnContinue je volána. Pokud CanStop, CanShutdownnebo CanPauseAndContinue je false, odpovídající metoda zpracování příkazů (například OnStop) nebude zpracována, i když jste implementovali metodu.

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

Nemusíte implementovat OnStart, OnStopani žádnou jinou metodu v ServiceBase. Chování služby je však popsáno v OnStart, takže minimálně tento člen by měl být přepsán. Funkce main() spustitelného souboru zaregistruje službu ve spustitelném souboru pomocí Správce řízení služeb voláním Run metody. ServiceName Vlastnost objektu ServiceBaseRun předaného metodě musí odpovídat ServiceName vlastnosti instalačního programu služby pro danou službu.

Pomocí příkazu můžete sc create nainstalovat služby, které cílí na moderní .NET, nebo můžete použít InstallUtil.exe k instalaci služeb, které cílí na rozhraní .NET Framework.

Poznámka:

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

Konstruktory

Name Description
ServiceBase()

Vytvoří novou instanci ServiceBase třídy.

Pole

Name Description
MaxNameLength

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

Vlastnosti

Name Description
AutoLog

Určuje, zda 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á určuje, zda služba může zpracovat 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 urč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 určující, zda může být služba zastavena po spuštění.

Container

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

(Zděděno od Component)
DesignMode

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

(Zděděno od Component)
EventLog

Získá protokol událostí, který můžete použít k zápisu oznámení volání příkazů služby, jako je start 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á obslužný popisovač řízení služby pro službu.

ServiceName

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

Site

Získá nebo nastaví ISite .Component

(Zděděno od Component)

Metody

Name Description
CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužící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é nástrojem ServiceBase.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

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

Slouží jako výchozí funkce hash.

(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 jeho Container.

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

Získá Type aktuální instance.

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

Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci.

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

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

(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í při OnContinue() odeslání příkazu Continue do služby správcem řízení služeb (SCM). 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ě se spustí, OnCustomCommand(Int32) když Správce řízení služeb (SCM) předá do služby vlastní příkaz. 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í při odeslání příkazu Pause do služby správcem řízení služeb (SCM). Určuje akce, které se mají provést při pozastavení služby.

OnPowerEvent(PowerBroadcastStatus)

Při implementaci v odvozené třídě se spustí při změně stavu napájení počítače. To platí pro přenosné počítače, když 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ě se spustí při vypnutí systému. Určuje, co se má provést 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ž služba přestane běžet.

RequestAdditionalTime(Int32)

Vyžaduje další čas pro čekající operaci.

RequestAdditionalTime(TimeSpan)

Pokud je tato metoda volána z OnStart, OnStop, OnPause nebo OnContinue, zadaný tip čekání se předá Správci řízení služeb, aby se zabránilo tomu, že služba označená 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

Name Description
Disposed

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

(Zděděno od Component)

Platí pro

Viz také