ServiceBase Classe

Definizione

Fornisce una classe base per un servizio che esisterà nel contesto di un'applicazione di servizio.Provides a base class for a service that will exist as part of a service application. È necessario derivare ServiceBase durante la creazione di una nuova classe di servizio.ServiceBase must be derived from when creating a new service class.

public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
    inherit Component
Public Class ServiceBase
Inherits Component
Ereditarietà
Derivato

Commenti

Derivare ServiceBase da quando si definisce la classe del servizio in un'applicazione di servizio.Derive from ServiceBase when defining your service class in a service application. Qualsiasi servizio utile esegue l' OnStart override OnStop dei metodi e.Any useful service overrides the OnStart and OnStop methods. Per funzionalità aggiuntive, è possibile eseguire OnPause l' OnContinue override di e con un comportamento specifico in risposta alle modifiche nello stato del servizio.For additional functionality, you can override OnPause and OnContinue with specific behavior in response to changes in the service state.

Un servizio è un eseguibile con esecuzione prolungata che non supporta un'interfaccia utente e che potrebbe non essere eseguito con l'account utente connesso.A service is a long-running executable that does not support a user interface, and which might not run under the logged-on user account. Il servizio può essere eseguito senza che nessun utente sia connesso al computer.The service can run without any user being logged on to the computer.

Per impostazione predefinita, i servizi vengono eseguiti con l'account di sistema, che non corrisponde all'account Administrator.By default, services run under the System account, which is not the same as the Administrator account. Non è possibile modificare i diritti dell'account di sistema.You cannot change the rights of the System account. In alternativa, è possibile utilizzare un ServiceProcessInstaller oggetto per specificare un account utente con cui eseguire il servizio.Alternatively, you can use a ServiceProcessInstaller to specify a user account under which the service will run.

Un eseguibile può contenere più di un servizio, ma deve contenere ServiceInstaller un separato per ogni servizio.An executable can contain more than one service but must contain a separate ServiceInstaller for each service. L' ServiceInstaller istanza registra il servizio con il sistema.The ServiceInstaller instance registers the service with the system. Il programma di installazione associa inoltre ogni servizio a un registro eventi che è possibile utilizzare per registrare i comandi del servizio.The installer also associates each service with an event log that you can use to record service commands. La main() funzione nell'eseguibile definisce quali servizi devono essere eseguiti.The main() function in the executable defines which services should run. La directory di lavoro corrente del servizio è la directory di sistema, non la directory in cui si trova il file eseguibile.The current working directory of the service is the system directory, not the directory in which the executable is located.

Quando si avvia un servizio, il sistema individua il file eseguibile ed esegue OnStart il metodo per quel servizio, contenuto all'interno del file eseguibile.When you start a service, the system locates the executable and runs the OnStart method for that service, contained within the executable. Tuttavia, l'esecuzione del servizio non corrisponde all'esecuzione del file eseguibile.However, running the service is not the same as running the executable. Il file eseguibile carica solo il servizio.The executable only loads the service. È possibile accedere al servizio (ad esempio, avviato e arrestato) tramite Gestione controllo servizi.The service is accessed (for example, started and stopped) through the Service Control Manager.

Il file eseguibile ServiceBase chiama il costruttore della classe derivata la prima volta che si chiama Start sul servizio.The executable calls the ServiceBase derived class's constructor the first time you call Start on the service. Il OnStart metodo di gestione dei comandi viene chiamato immediatamente dopo l'esecuzione del costruttore.The OnStart command-handling method is called immediately after the constructor executes. Il costruttore non viene eseguito di nuovo dopo la prima volta che il servizio è stato caricato, quindi è necessario separare l'elaborazione eseguita dal costruttore da quella eseguita da OnStart.The constructor is not executed again after the first time the service has been loaded, so it is necessary to separate the processing performed by the constructor from that performed by OnStart. Tutte le risorse che possono essere rilasciate da OnStop devono essere create in. OnStartAny resources that can be released by OnStop should be created in OnStart. La creazione di risorse nel costruttore ne impedisce la creazione correttamente se il servizio viene avviato di nuovo OnStop dopo il rilascio delle risorse.Creating resources in the constructor prevents them from being created properly if the service is started again after OnStop has released the resources.

Gestione controllo servizi consente di interagire con il servizio.The Service Control Manager (SCM) provides a way to interact with the service. È possibile utilizzare SCM per passare i comandi Start, stop, pause, continue o Custom al servizio.You can use the SCM to pass Start, Stop, Pause, Continue, or custom commands into the service. SCM usa i valori di CanStop e CanPauseAndContinue per determinare se il servizio accetta i comandi stop, pause o continue.The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. Le funzionalità arresta, Sospendi e continua sono abilitate nei menu di scelta rapida di SCM solo CanStop se CanPauseAndContinue la true proprietà corrispondente o si trova nella classe del servizio.Stop, Pause, and Continue are enabled in the SCM's context menus only if the corresponding property CanStop or CanPauseAndContinue is true in the service class. Se abilitata, il comando viene passato al servizio e OnStopviene chiamato, OnPauseo OnContinue .If enabled, the command is passed to the service, and OnStop, OnPause, or OnContinue is called. Se CanStop, CanShutdowno è,falseil metodo diOnStopgestione dei comandi corrispondente (ad esempio) non verrà elaborato, anche se è stato implementato il metodo. CanPauseAndContinueIf CanStop, CanShutdown, or CanPauseAndContinue is false, the corresponding command-handling method (such as OnStop) will not be processed, even if you have implemented the method.

È possibile utilizzare la ServiceController classe per eseguire a livello di programmazione l'operazione eseguita da SCM utilizzando un'interfaccia utente.You can use the ServiceController class to do programmatically what the SCM does using a user interface. È possibile automatizzare le attività disponibili nella console di.You can automate the tasks available in the console. Se CanStop, CanShutdowno èmatrue non è stato implementato un metodo di gestione dei comandi corrispondente (ad esempio ),ilsistemageneraun'eccezioneeignorailcomando.OnStop CanPauseAndContinueIf CanStop, CanShutdown, or CanPauseAndContinue is true but you have not implemented a corresponding command-handling method (such as OnStop) the system throws an exception and ignores the command.

Non è necessario implementare OnStart, OnStopo qualsiasi altro metodo in ServiceBase.You do not have to implement OnStart, OnStop, or any other method in ServiceBase. Tuttavia, il comportamento del servizio viene descritto in OnStart, quindi almeno questo membro deve essere sottoposto a override.However, the service's behavior is described in OnStart, so at minimum, this member should be overridden. La main() funzione del file eseguibile registra il servizio nell'eseguibile con Gestione controllo servizi chiamando il Run metodo.The main() function of the executable registers the service in the executable with the Service Control Manager by calling the Run method. La ServiceName proprietà Run ServiceName dell'oggetto passato al metodo deve corrispondere alla proprietà del programma di installazione del servizio per il servizio. ServiceBaseThe ServiceName property of the ServiceBase object passed to the Run method must match the ServiceName property of the service installer for that service.

È possibile usare InstallUtil.exe per installare i servizi nel sistema.You can use InstallUtil.exe to install services on your system.

Nota

È possibile specificare un log diverso dal registro eventi dell'applicazione per ricevere una notifica delle chiamate al servizio, ma AutoLog né la EventLog proprietà né la proprietà possono scrivere in un log personalizzato.You can specify a log other than the Application event log to receive notification of service calls, but neither the AutoLog nor the EventLog property can write to a custom log. Impostare AutoLog sufalse se non si desidera utilizzare la registrazione automatica.Set AutoLog to false if you do not want to use automatic logging.

Costruttori

ServiceBase()

Crea una nuova istanza della classe ServiceBase.Creates a new instance of the ServiceBase class.

Campi

MaxNameLength

Indica la dimensione massima per il nome di un servizio.Indicates the maximum size for a service name.

Proprietà

AutoLog

Indica se registrare i comandi di avvio, interruzione, sospensione e continuazione nel log eventi.Indicates whether to report Start, Stop, Pause, and Continue commands in the event log.

CanHandlePowerEvent

Ottiene o imposta un valore che indica se il servizio può gestire le notifiche relative alle variazioni di stato dell'alimentazione del computer.Gets or sets a value indicating whether the service can handle notifications of computer power status changes.

CanHandleSessionChangeEvent

Ottiene o imposta il valore che indica se il servizio è in grado di gestire gli eventi di modifica di sessione ricevuti dalla sessione Terminal Server.Gets or sets a value that indicates whether the service can handle session change events received from a Terminal Server session.

CanPauseAndContinue

Ottiene o imposta un valore che indica se il servizio può essere sospeso e riattivato.Gets or sets a value indicating whether the service can be paused and resumed.

CanRaiseEvents

Ottiene un valore che indica se il componente può generare un evento.Gets a value indicating whether the component can raise an event.

(Ereditato da Component)
CanShutdown

Ottiene o imposta un valore che indica se è necessario che il servizio riceva una notifica quando il sistema è in fase di chiusura.Gets or sets a value indicating whether the service should be notified when the system is shutting down.

CanStop

Ottiene o imposta un valore che indica se il servizio, una volta avviato, può essere interrotto.Gets or sets a value indicating whether the service can be stopped once it has started.

Container

Ottiene il IContainer che contiene il Component.Gets the IContainer that contains the Component.

(Ereditato da Component)
DesignMode

Ottiene un valore che indica se il Component si trova in modalità progettazione.Gets a value that indicates whether the Component is currently in design mode.

(Ereditato da Component)
EventLog

Ottiene un log eventi da utilizzare per scrivere nel log eventi delle applicazioni le notifiche delle chiamate ai comandi di servizio, come Start e Stop.Gets an event log you can use to write notification of service command calls, such as Start and Stop, to the Application event log.

Events

Ottiene l'elenco dei gestori eventi allegati a questo Component.Gets the list of event handlers that are attached to this Component.

(Ereditato da Component)
ExitCode

Ottiene o imposta il codice di uscita del servizio.Gets or sets the exit code for the service.

ServiceHandle

Ottiene l'handle del controllo di servizio.Gets the service control handle for the service.

ServiceName

Ottiene o imposta il nome breve utilizzato per identificare il servizio nel sistema.Gets or sets the short name used to identify the service to the system.

Site

Ottiene o imposta l'oggetto ISite di Component.Gets or sets the ISite of the Component.

(Ereditato da Component)

Metodi

CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia tutte le risorse usate da Component.Releases all resources used by the Component.

(Ereditato da Component)
Dispose(Boolean)

Elimina le risorse, diverse dalla memoria, usate dall'oggetto ServiceBase.Disposes of the resources (other than memory) used by the ServiceBase.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetLifetimeService()

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Ereditato da MarshalByRefObject)
GetService(Type)

Consente di restituire un oggetto che rappresenta un servizio fornito da Component o dal relativo Container.Returns an object that represents a service provided by the Component or by its Container.

(Ereditato da Component)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
InitializeLifetimeService()

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.Obtains a lifetime service object to control the lifetime policy for this instance.

(Ereditato da MarshalByRefObject)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.Creates a shallow copy of the current MarshalByRefObject object.

(Ereditato da MarshalByRefObject)
OnContinue()

Quando viene eseguita l'implementazione in una classe derivata, l'esecuzione di OnContinue() avviene quando Gestione controllo servizi invia al servizio un comando Continue.When implemented in a derived class, OnContinue() runs when a Continue command is sent to the service by the Service Control Manager (SCM). Specifica le azioni da intraprendere quando un servizio riprende il normale funzionamento dopo essere stato sospeso.Specifies actions to take when a service resumes normal functioning after being paused.

OnCustomCommand(Int32)

Quando viene eseguita l'implementazione in una classe derivata, l'esecuzione di OnCustomCommand(Int32) avviene quando Gestione controllo servizi passa al servizio un comando personalizzato.When implemented in a derived class, OnCustomCommand(Int32) executes when the Service Control Manager (SCM) passes a custom command to the service. Specifica le azioni da intraprendere quando ricorre un comando con il parametro specificato.Specifies actions to take when a command with the specified parameter value occurs.

OnPause()

Quando viene eseguita l'implementazione in una classe derivata, l'esecuzione avviene quando Gestione controllo servizi invia un comando Pause al servizio.When implemented in a derived class, executes when a Pause command is sent to the service by the Service Control Manager (SCM). Specifica le azioni da intraprendere quando un servizio viene sospeso.Specifies actions to take when a service pauses.

OnPowerEvent(PowerBroadcastStatus)

Quando viene eseguita l'implementazione in una classe derivata, l'esecuzione avviene al variare dello stato di alimentazioneWhen implemented in a derived class, executes when the computer's power status has changed. dei computer laptop che entrano in modalità sospesa, una condizione che non corrisponde alla chiusura del sistema.This applies to laptop computers when they go into suspended mode, which is not the same as a system shutdown.

OnSessionChange(SessionChangeDescription)

Viene eseguito alla ricezione di un evento di modifica da una sessione Terminal Server.Executes when a change event is received from a Terminal Server session.

OnShutdown()

Quando viene eseguita l'implementazione in una classe derivata, l'esecuzione avviene alla chiusura del sistema.When implemented in a derived class, executes when the system is shutting down. Specifica quali operazioni devono essere eseguite subito prima della chiusura del sistema.Specifies what should occur immediately prior to the system shutting down.

OnStart(String[])

Quando viene eseguita l'implementazione in una classe derivata, l'esecuzione avviene quando Gestione controllo servizi invia un comando Pause al servizio o quando viene avviato il sistema (nel caso di un servizio ad avvio automatico).When implemented in a derived class, executes when a Start command is sent to the service by the Service Control Manager (SCM) or when the operating system starts (for a service that starts automatically). Specifica le azioni da intraprendere all'avvio del servizio.Specifies actions to take when the service starts.

OnStop()

Quando viene eseguita l'implementazione in una classe derivata, l'esecuzione avviene quando il gestore SCM invia un comando Stop al servizio.When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). Specifica le azioni da intraprendere al termine dell'esecuzione del servizio.Specifies actions to take when a service stops running.

RequestAdditionalTime(Int32)

Consente di richiedere tempo aggiuntivo per un'operazione in attesa.Requests additional time for a pending operation.

Run(ServiceBase)

Registra il file eseguibile relativo a servizio con il gestore SCM.Registers the executable for a service with the Service Control Manager (SCM).

Run(ServiceBase[])

Registra il file eseguibile relativo a più servizi con il gestore SCM.Registers the executable for multiple services with the Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr)

Consente di registrare il gestore comando e di avviare il servizio.Registers the command handler and starts the service.

Stop()

Arresta il servizio in esecuzione.Stops the executing service.

ToString()

Restituisce un oggetto String che contiene il nome dell'eventuale oggetto Component.Returns a String containing the name of the Component, if any. Questo metodo non deve essere sottoposto a override.This method should not be overridden.

(Ereditato da Component)

Eventi

Disposed

Si verifica quando il componente viene eliminato da una chiamata al metodo Dispose().Occurs when the component is disposed by a call to the Dispose() method.

(Ereditato da Component)

Si applica a

Vedi anche