ServiceBase Klas

Definitie

Biedt een basisklasse voor een service die bestaat als onderdeel van een servicetoepassing. ServiceBase moet worden afgeleid van wanneer u een nieuwe serviceklasse maakt.

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

Opmerkingen

Afgeleid van bij het definiëren van ServiceBase uw serviceklasse in een servicetoepassing. Elke nuttige service overschrijft de OnStart en OnStop methoden. Voor extra functionaliteit kunt u dit overschrijven OnPause en OnContinue met specifiek gedrag als reactie op wijzigingen in de servicestatus.

Een service is een langlopend uitvoerbaar bestand dat geen ondersteuning biedt voor een gebruikersinterface en die mogelijk niet wordt uitgevoerd onder het aangemelde gebruikersaccount. De service kan worden uitgevoerd zonder dat een gebruiker is aangemeld bij de computer.

Standaard worden services uitgevoerd onder het systeemaccount, dat niet hetzelfde is als het beheerdersaccount. U kunt de rechten van het systeemaccount niet wijzigen. U kunt ook een ServiceProcessInstaller gebruikersaccount opgeven waaronder de service wordt uitgevoerd.

Een uitvoerbaar bestand kan meer dan één service bevatten, maar moet een afzonderlijke ServiceInstaller service bevatten voor elke service. Het ServiceInstaller exemplaar registreert de service bij het systeem. Het installatieprogramma koppelt elke service ook aan een gebeurtenislogboek dat u kunt gebruiken om serviceopdrachten vast te leggen. De main() functie in het uitvoerbare bestand definieert welke services moeten worden uitgevoerd. De huidige werkmap van de service is de systeemmap, niet de map waarin het uitvoerbare bestand zich bevindt.

Wanneer u een service start, zoekt het systeem het uitvoerbare bestand en voert het de OnStart methode voor die service uit, die zich in het uitvoerbare bestand bevindt. Het uitvoeren van de service is echter niet hetzelfde als het uitvoeren van het uitvoerbare bestand. Het uitvoerbare bestand laadt alleen de service. De service wordt geopend (bijvoorbeeld gestart en gestopt) via Service Control Manager.

Het uitvoerbare bestand roept de constructor van de ServiceBase afgeleide klasse de eerste keer aan dat u Start op de service aanroept. De OnStart methode voor het afhandelen van opdrachten wordt onmiddellijk aangeroepen nadat de constructor is uitgevoerd. De constructor wordt niet opnieuw uitgevoerd nadat de service voor het eerst is geladen, dus het is noodzakelijk om de verwerking die door de constructor wordt uitgevoerd, te scheiden van die door OnStartde constructor. Alle resources die kunnen worden vrijgegeven, OnStop moeten worden gemaakt in OnStart. Het maken van resources in de constructor voorkomt dat ze correct worden gemaakt als de service opnieuw wordt gestart nadat OnStop de resources zijn vrijgegeven.

Service Control Manager (SCM) biedt een manier om met de service te communiceren. U kunt de SCM gebruiken om de opdrachten Starten, Stoppen, Onderbreken, Doorgaan of Aangepaste opdrachten door te geven aan de service. De SCM gebruikt de waarden van CanStop en CanPauseAndContinue om te bepalen of de service opdrachten Stoppen, Onderbreken of Doorgaan accepteert. Stoppen, Onderbreken en Doorgaan zijn alleen ingeschakeld in de contextmenu's van SCM als de bijbehorende eigenschap CanStop of CanPauseAndContinue zich in de serviceklasse bevindt true . Als deze optie is ingeschakeld, wordt de opdracht doorgegeven aan de service en OnStop, OnPauseof OnContinue wordt deze aangeroepen. CanShutdown false CanPauseAndContinue Als CanStopde bijbehorende methode voor het verwerken van opdrachten (zoals ) OnStopniet wordt verwerkt, zelfs niet als u de methode hebt geïmplementeerd.

U kunt de ServiceController klasse gebruiken om programmatisch te doen wat de SCM doet met behulp van een gebruikersinterface. U kunt de taken die beschikbaar zijn in de console automatiseren. AlsCanStop, CanShutdownof weltrue, maar CanPauseAndContinue u geen bijbehorende methode voor het afhandelen van opdrachten (zoalsOnStop) hebt geïmplementeerd, genereert het systeem een uitzondering en negeert u de opdracht.

U hoeft geen of OnStopandere methode te implementeren OnStartin ServiceBase. Het gedrag van de service wordt echter beschreven in OnStart, dus minimaal moet dit lid worden overschreven. De main() functie van het uitvoerbare bestand registreert de service in het uitvoerbare bestand met Service Control Manager door de methode aan te Run roepen. De ServiceName eigenschap van het ServiceBase object dat aan de Run methode wordt doorgegeven, moet overeenkomen met de ServiceName eigenschap van het service-installatieprogramma voor die service.

U kunt de opdracht sc create gebruiken om services te installeren die gericht zijn op moderne .NET of InstallUtil.exe gebruiken om services te installeren die gericht zijn op .NET Framework.

Note

U kunt een ander logboek dan het gebeurtenislogboek van de toepassing opgeven om meldingen van service-aanroepen te ontvangen, maar de AutoLogEventLog eigenschap kan niet naar een aangepast logboek schrijven. Ingesteld AutoLog op false als u automatische logboekregistratie niet wilt gebruiken.

Constructors

Name Description
ServiceBase()

Hiermee maakt u een nieuw exemplaar van de ServiceBase klasse.

Velden

Name Description
MaxNameLength

Hiermee wordt de maximale grootte voor een servicenaam aangegeven.

Eigenschappen

Name Description
AutoLog

Hiermee wordt aangegeven of de opdrachten Start, Stoppen, Onderbreken en Doorgaan in het gebeurtenislogboek moeten worden weergegeven.

CanHandlePowerEvent

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de service meldingen van wijzigingen in de computerstroomstatus kan verwerken.

CanHandleSessionChangeEvent

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de service sessiewijzigingsgebeurtenissen kan verwerken die zijn ontvangen van een Terminal Server-sessie.

CanPauseAndContinue

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de service kan worden onderbroken en hervat.

CanRaiseEvents

Hiermee wordt een waarde opgehaald die aangeeft of het onderdeel een gebeurtenis kan genereren.

(Overgenomen van Component)
CanShutdown

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de service moet worden gewaarschuwd wanneer het systeem wordt afgesloten.

CanStop

Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de service kan worden gestopt zodra deze is gestart.

Container

Hiermee haalt u het IContainer bestand op dat de Component.

(Overgenomen van Component)
DesignMode

Hiermee wordt een waarde opgehaald die aangeeft of de Component momenteel in de ontwerpmodus is.

(Overgenomen van Component)
EventLog

Hiermee haalt u een gebeurtenislogboek op dat u kunt gebruiken voor het schrijven van meldingen van serviceopdrachtaanroepen, zoals Starten en Stoppen, naar het gebeurtenislogboek van de toepassing.

Events

Hiermee haalt u de lijst met gebeurtenis-handlers op die aan dit Componentbestand zijn gekoppeld.

(Overgenomen van Component)
ExitCode

Hiermee haalt u de afsluitcode voor de service op of stelt u deze in.

ServiceHandle

Hiermee haalt u de servicebesturingsgreep voor de service op.

ServiceName

Hiermee haalt u de korte naam op die wordt gebruikt om de service voor het systeem te identificeren of stelt u deze in.

Site

Haalt of stelt de ISite van de Component.

(Overgenomen van Component)

Methoden

Name Description
CreateObjRef(Type)

Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object.

(Overgenomen van MarshalByRefObject)
Dispose()

Alle resources die worden gebruikt door de Component.

(Overgenomen van Component)
Dispose(Boolean)

Verwijdert de resources (behalve het geheugen) die worden gebruikt door de ServiceBase.

Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetLifetimeService()

Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd.

(Overgenomen van MarshalByRefObject)
GetService(Type)

Hiermee wordt een object geretourneerd dat een service vertegenwoordigt die wordt geleverd door of door de Component service Container.

(Overgenomen van Component)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
InitializeLifetimeService()

Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren.

(Overgenomen van MarshalByRefObject)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
MemberwiseClone(Boolean)

Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object.

(Overgenomen van MarshalByRefObject)
OnContinue()

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, OnContinue() wordt uitgevoerd wanneer een continue-opdracht door de Service Control Manager (SCM) naar de service wordt verzonden. Hiermee geeft u acties op die moeten worden uitgevoerd wanneer een service normaal functioneert nadat deze is onderbroken.

OnCustomCommand(Int32)

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, OnCustomCommand(Int32) wordt uitgevoerd wanneer de Service Control Manager (SCM) een aangepaste opdracht doorgeeft aan de service. Hiermee geeft u acties op die moeten worden uitgevoerd wanneer een opdracht met de opgegeven parameterwaarde plaatsvindt.

OnPause()

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, wordt uitgevoerd wanneer een opdracht Onderbreken naar de service wordt verzonden door de Service Control Manager (SCM). Hiermee geeft u acties op die moeten worden uitgevoerd wanneer een service wordt onderbroken.

OnPowerEvent(PowerBroadcastStatus)

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, wordt uitgevoerd wanneer de energiestatus van de computer is gewijzigd. Dit geldt voor laptopcomputers wanneer ze in de onderbroken modus gaan, wat niet hetzelfde is als het afsluiten van het systeem.

OnSessionChange(SessionChangeDescription)

Wordt uitgevoerd wanneer een wijzigingsgebeurtenis wordt ontvangen van een Terminal Server-sessie.

OnShutdown()

Wanneer het systeem wordt geïmplementeerd in een afgeleide klasse, wordt uitgevoerd wanneer het systeem wordt afgesloten. Hiermee geeft u op wat er onmiddellijk moet gebeuren voordat het systeem wordt afgesloten.

OnStart(String[])

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, wordt uitgevoerd wanneer een startopdracht wordt verzonden naar de service door de Service Control Manager (SCM) of wanneer het besturingssysteem wordt gestart (voor een service die automatisch wordt gestart). Hiermee geeft u acties op die moeten worden uitgevoerd wanneer de service wordt gestart.

OnStop()

Wanneer deze wordt geïmplementeerd in een afgeleide klasse, wordt uitgevoerd wanneer een stopopdracht wordt verzonden naar de service door de Service Control Manager (SCM). Hiermee geeft u acties op die moeten worden uitgevoerd wanneer een service stopt met uitvoeren.

RequestAdditionalTime(Int32)

Vraagt extra tijd aan voor een bewerking die in behandeling is.

Run(ServiceBase)

Registreert het uitvoerbare bestand voor een service met Service Control Manager (SCM).

Run(ServiceBase[])

Registreert het uitvoerbare bestand voor meerdere services met Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr)

Registreert de opdrachthandler en start de service.

Stop()

Stopt de uitvoering van de service.

ToString()

Retourneert een String met de naam van de Component, indien van toepassing. Deze methode mag niet worden overschreven.

(Overgenomen van Component)

gebeurtenis

Name Description
Disposed

Treedt op wanneer het onderdeel wordt verwijderd door een aanroep naar de Dispose() methode.

(Overgenomen van Component)

Van toepassing op

Zie ook