ServiceBase Klass

Definition

Tillhandahåller en basklass för en tjänst som ska finnas som en del av ett tjänstprogram. ServiceBase måste härledas från när du skapar en ny tjänstklass.

public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
    inherit Component
Public Class ServiceBase
Inherits Component
Arv

Kommentarer

Härled från ServiceBase när du definierar tjänstklassen i ett tjänstprogram. Alla användbara tjänster åsidosätter OnStart metoderna och OnStop . För ytterligare funktioner kan du åsidosätta OnPause och OnContinue med specifikt beteende som svar på ändringar i tjänsttillståndet.

En tjänst är en tidskrävande körbar fil som inte stöder ett användargränssnitt och som kanske inte körs under det inloggade användarkontot. Tjänsten kan köras utan att någon användare loggas in på datorn.

Som standard körs tjänster under systemkontot, vilket inte är samma som administratörskontot. Du kan inte ändra rättigheterna för systemkontot. Du kan också använda en ServiceProcessInstaller för att ange ett användarkonto som tjänsten ska köras under.

En körbar fil kan innehålla mer än en tjänst men måste innehålla en separat ServiceInstaller för varje tjänst. Instansen ServiceInstaller registrerar tjänsten med systemet. Installationsprogrammet associerar även varje tjänst med en händelselogg som du kan använda för att registrera tjänstkommandon. Funktionen main() i den körbara filen definierar vilka tjänster som ska köras. Den aktuella arbetskatalogen för tjänsten är systemkatalogen, inte den katalog där den körbara filen finns.

När du startar en tjänst letar systemet upp den körbara filen och kör metoden för den OnStart tjänsten, som finns i den körbara filen. Att köra tjänsten är dock inte detsamma som att köra den körbara filen. Den körbara filen läser bara in tjänsten. Tjänsten nås (till exempel startas och stoppas) via Service Control Manager.

Den körbara filen anropar konstruktorn för den ServiceBase härledda klassen första gången du anropar Start på tjänsten. Kommandohanteringsmetoden OnStart anropas omedelbart efter att konstruktorn har körts. Konstruktorn körs inte igen efter första gången tjänsten har lästs in, så det är nödvändigt att separera bearbetningen som utförs av konstruktorn från den som utförs av OnStart. Alla resurser som kan frigöras av OnStop bör skapas i OnStart. Om du skapar resurser i konstruktorn hindrar du dem från att skapas korrekt om tjänsten startas igen efter OnStop att resurserna har släppts.

Service Control Manager (SCM) är ett sätt att interagera med tjänsten. Du kan använda SCM för att skicka start-, stopp-, paus-, fortsätt- eller anpassade kommandon till tjänsten. SCM använder värdena CanStop för och CanPauseAndContinue för att avgöra om tjänsten accepterar kommandona Stoppa, Pausa eller Fortsätt. Stop, Pause och Continue är aktiverade i SCM:s snabbmenyer endast om motsvarande egenskap CanStop eller CanPauseAndContinue finns true i tjänstklassen. Om det är aktiverat skickas kommandot till tjänsten, och OnStop, OnPauseeller OnContinue anropas. Om CanStop, CanShutdown, eller CanPauseAndContinue är false, bearbetas inte motsvarande kommandohanteringsmetod (till exempel OnStop) även om du har implementerat metoden.

Du kan använda ServiceController klassen för att göra programmatiskt vad SCM gör med hjälp av ett användargränssnitt. Du kan automatisera de uppgifter som är tillgängliga i konsolen. Om CanStop, CanShutdown, eller CanPauseAndContinue är true men du inte har implementerat någon motsvarande kommandohanteringsmetod (till exempel OnStop) genererar systemet ett undantag och ignorerar kommandot.

Du behöver inte implementera OnStart, OnStopeller någon annan metod i ServiceBase. Tjänstens beteende beskrivs dock i OnStart, så åtminstone bör den här medlemmen åsidosättas. Funktionen main() för den körbara filen registrerar tjänsten i den körbara filen med Service Control Manager genom att anropa Run metoden. Egenskapen ServiceName för objektet som ServiceBase skickas till Run metoden måste matcha ServiceName egenskapen för tjänstinstallationsprogrammet för den tjänsten.

Du kan använda kommandot sc create för att installera tjänster som riktar sig mot moderna .NET eller använda InstallUtil.exe för att installera tjänster som är avsedda för .NET Framework.

Note

Du kan ange en annan logg än programhändelseloggen för att ta emot meddelanden om tjänstanrop, men varken AutoLog egenskapen eller EventLog kan skriva till en anpassad logg. Ange AutoLog till false om du inte vill använda automatisk loggning.

Konstruktorer

Name Description
ServiceBase()

Skapar en ny instans av ServiceBase klassen.

Fält

Name Description
MaxNameLength

Anger den maximala storleken för ett tjänstnamn.

Egenskaper

Name Description
AutoLog

Anger om kommandona Start, Stop, Pause och Continue ska rapporteras i händelseloggen.

CanHandlePowerEvent

Hämtar eller anger ett värde som anger om tjänsten kan hantera meddelanden om ändringar i datorns energistatus.

CanHandleSessionChangeEvent

Hämtar eller anger ett värde som anger om tjänsten kan hantera sessionsändringshändelser som tagits emot från en Terminal Server-session.

CanPauseAndContinue

Hämtar eller anger ett värde som anger om tjänsten kan pausas och återupptas.

CanRaiseEvents

Hämtar ett värde som anger om komponenten kan generera en händelse.

(Ärvd från Component)
CanShutdown

Hämtar eller anger ett värde som anger om tjänsten ska meddelas när systemet stängs av.

CanStop

Hämtar eller anger ett värde som anger om tjänsten kan stoppas när den har startats.

Container

Hämtar som IContainer innehåller Component.

(Ärvd från Component)
DesignMode

Hämtar ett värde som anger om det Component för närvarande är i designläge.

(Ärvd från Component)
EventLog

Hämtar en händelselogg som du kan använda för att skriva meddelanden om tjänstkommandoanrop, till exempel Start och Stopp, till programhändelseloggen.

Events

Hämtar listan över händelsehanterare som är kopplade till den här Component.

(Ärvd från Component)
ExitCode

Hämtar eller anger slutkoden för tjänsten.

ServiceHandle

Hämtar tjänstkontrollhandtaget för tjänsten.

ServiceName

Hämtar eller anger det korta namn som används för att identifiera tjänsten i systemet.

Site

Hämtar eller ställer in ISite i Component.

(Ärvd från Component)

Metoder

Name Description
CreateObjRef(Type)

Skapar ett objekt som innehåller all relevant information som krävs för att generera en proxy som används för att kommunicera med ett fjärrobjekt.

(Ärvd från MarshalByRefObject)
Dispose()

Släpper alla resurser som används av Component.

(Ärvd från Component)
Dispose(Boolean)

Gör sig av med de resurser (förutom minne) som används av ServiceBase.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetLifetimeService()

Hämtar det aktuella livslängdstjänstobjektet som styr livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
GetService(Type)

Returnerar ett objekt som representerar en tjänst som tillhandahålls av Component eller av dess Container.

(Ärvd från Component)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
InitializeLifetimeService()

Hämtar ett tjänstobjekt för livslängd för att styra livslängdsprincipen för den här instansen.

(Ärvd från MarshalByRefObject)
MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
MemberwiseClone(Boolean)

Skapar en ytlig kopia av det aktuella MarshalByRefObject objektet.

(Ärvd från MarshalByRefObject)
OnContinue()

När det implementeras i en härledd klass OnContinue() körs när ett Continue-kommando skickas till tjänsten av Service Control Manager (SCM). Anger åtgärder som ska utföras när en tjänst återupptar normal funktion efter paus.

OnCustomCommand(Int32)

När den implementeras i en härledd klass OnCustomCommand(Int32) körs när Service Control Manager (SCM) skickar ett anpassat kommando till tjänsten. Anger åtgärder som ska utföras när ett kommando med det angivna parametervärdet inträffar.

OnPause()

När det implementeras i en härledd klass körs när ett Paus-kommando skickas till tjänsten av Service Control Manager (SCM). Anger vilka åtgärder som ska utföras när en tjänst pausas.

OnPowerEvent(PowerBroadcastStatus)

När den implementeras i en härledd klass körs när datorns energistatus har ändrats. Detta gäller för bärbara datorer när de hamnar i pausat läge, vilket inte är samma sak som en systemavstängning.

OnSessionChange(SessionChangeDescription)

Körs när en ändringshändelse tas emot från en Terminal Server-session.

OnShutdown()

När det implementeras i en härledd klass körs när systemet stängs av. Anger vad som ska ske omedelbart innan systemet stängs av.

OnStart(String[])

När det implementeras i en härledd klass körs när ett Start-kommando skickas till tjänsten av Service Control Manager (SCM) eller när operativsystemet startar (för en tjänst som startas automatiskt). Anger vilka åtgärder som ska utföras när tjänsten startas.

OnStop()

När det implementeras i en härledd klass körs när ett stoppkommando skickas till tjänsten av Service Control Manager (SCM). Anger åtgärder som ska utföras när en tjänst slutar köras.

RequestAdditionalTime(Int32)

Begär ytterligare tid för en väntande åtgärd.

Run(ServiceBase)

Registrerar den körbara filen för en tjänst med Service Control Manager (SCM).

Run(ServiceBase[])

Registrerar den körbara filen för flera tjänster med Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr)

Registrerar kommandohanteraren och startar tjänsten.

Stop()

Stoppar körningstjänsten.

ToString()

Returnerar ett String som innehåller namnet på Component, om det finns. Den här metoden bör inte åsidosättas.

(Ärvd från Component)

Händelser

Name Description
Disposed

Inträffar när komponenten tas bort av ett anrop till Dispose() metoden.

(Ärvd från Component)

Gäller för

Se även