Il metodo Main per l'applicazione di servizio deve eseguire il comando Esegui per i servizi contenuti nel progetto.The Main method for your service application must issue the Run command for the services your project contains.Il metodo Run carica i servizi in Gestione controllo servizi nel server appropriato.The Run method loads the services into the Services Control Manager on the appropriate server.Se si usa il modello di progetto Servizio Windows, questo metodo viene creato automaticamente.If you use the Windows Services project template, this method is written for you automatically.Si noti che il caricamento di un servizio non equivale all'avvio del servizio.Note that loading a service is not the same thing as starting the service.Vedere "Ciclo di vita del servizio" di seguito per altre informazioni.See "Service Lifetime" below for more information.

Le applicazioni di servizio Windows vengono eseguite in un oggetto finestra diverso rispetto all'oggetto interattivo dell'utente connesso.Windows Service applications run in a different window station than the interactive station of the logged-on user.Un oggetto finestra è un oggetto sicuro che contiene gli Appunti, un set di atom globali e un gruppo di oggetti desktop.A window station is a secure object that contains a Clipboard, a set of global atoms, and a group of desktop objects.Dato che l'oggetto del servizio Windows non è interattivo, le finestre di dialogo generate da un'applicazione di servizio Windows non saranno visibili e potrebbero causare il blocco del programma.Because the station of the Windows service is not an interactive station, dialog boxes raised from within a Windows service application will not be seen and may cause your program to stop responding.Analogamente, i messaggi di errore devono essere registrati nel registro eventi di Windows anziché essere generati nell'interfaccia utente.Similarly, error messages should be logged in the Windows event log rather than raised in the user interface.

L'interazione del servizio Windows con l'utente o altri oggetti deve essere progettata attentamente per includere scenari come l'assenza di un utente connesso o un utente con un set di oggetti desktop imprevisto.The interaction of the Windows service with the user or other stations must be carefully designed to include scenarios such as there being no logged on user, or the user having an unexpected set of desktop objects.In alcuni casi, potrebbe essere più opportuno scrivere un'applicazione Windows eseguita sotto il controllo dell'utente.In some cases, it may be more appropriate to write a Windows application that runs under the control of the user.

Le applicazioni di servizio Windows vengono eseguite all'interno di un contesto di sicurezza proprio e avviate prima che l'utente acceda al computer Windows in cui sono installate.Windows service applications run in their own security context and are started before the user logs into the Windows computer on which they are installed.È necessario pianificare attentamente l'account utente nell'ambito del quale eseguire il servizio. Un servizio in esecuzione con l'account di sistema ha più autorizzazioni e privilegi rispetto al contesto di un account utente.You should plan carefully what user account to run the service within; a service running under the system account has more permissions and privileges than a user account.

Ciclo di vita del servizioService Lifetime

Un servizio passa attraverso diversi stati interni durante il ciclo di vita.A service goes through several internal states in its lifetime.In primo luogo, il servizio viene installato nel sistema in cui verrà eseguito.First, the service is installed onto the system on which it will run.Questo processo esegue i programmi di installazione per il progetto di servizio e carica il servizio in Gestione controllo servizi per tale computer.This process executes the installers for the service project and loads the service into the Services Control Manager for that computer.Gestione controllo servizi è l'utilità centrale fornita da Windows per amministrare i servizi.The Services Control Manager is the central utility provided by Windows to administer services.

Un servizio in esecuzione può rimanere in questo stato per un periodo illimitato fino a quando non viene arrestato o sospeso o fino alla chiusura del computer.A running service can exist in this state indefinitely until it is either stopped or paused or until the computer shuts down.Un servizio può esistere in uno di tre stati di base: Running, Paused o Stopped.A service can exist in one of three basic states: Running, Paused, or Stopped.Il servizio può anche segnalare lo stato di un comando in sospeso: ContinuePending, PausePending, StartPending o StopPending.The service can also report the state of a pending command: ContinuePending, PausePending, StartPending, or StopPending.Questi stati indicano che è stato inviato un comando, ad esempio un comando per sospendere un servizio in esecuzione, ma che il comando non è ancora stato eseguito.These statuses indicate that a command has been issued, such as a command to pause a running service, but has not been carried out yet.È possibile eseguire una query su Status per determinare lo stato di un servizio oppure usare WaitForStatus per eseguire un'azione quando si verifica uno di questi stati.You can query the Status to determine what state a service is in, or use the WaitForStatus to carry out an action when any of these states occurs.

È possibile sospendere, arrestare o riprendere un servizio da Gestione controllo servizi, da Esplora server oppure chiamando metodi nel codice.You can pause, stop, or resume a service from the Services Control Manager, from Server Explorer, or by calling methods in code.Ognuna di queste azioni può chiamare una routine associata nel servizio (OnStop, OnPause o OnContinue), in cui è possibile definire un'ulteriore elaborazione da eseguire quando il servizio cambia stato.Each of these actions can call an associated procedure in the service (OnStop, OnPause, or OnContinue), in which you can define additional processing to be performed when the service changes state.

Tipi di serviziTypes of Services

Esistono due tipi di servizi che è possibile creare in Visual Studio con .NET Framework.There are two types of services you can create in Visual Studio using the .NET Framework.Ai servizi che sono l'unico servizio in un processo viene assegnato il tipo Win32OwnProcess.Services that are the only service in a process are assigned the type Win32OwnProcess.Ai servizi che condividono un processo con un altro servizio viene assegnato il tipo Win32ShareProcess.Services that share a process with another service are assigned the type Win32ShareProcess.È possibile recuperare il tipo di servizio eseguendo una query sulla proprietà ServiceType.You can retrieve the service type by querying the ServiceType property.

Se si eseguono query su servizi esistenti che non sono stati creati in Visual Studio, è possibile riscontrare altri tipi di servizio.You might occasionally see other service types if you query existing services that were not created in Visual Studio.Per altre informazioni in merito, vedere ServiceType.For more information on these, see the ServiceType.

RequisitiRequirements

I servizi devono essere creati in un progetto di applicazione Servizio Windows o in un altro progetto abilitato per .NET Framework, che viene compilato come file EXE ed eredita dalla classe ServiceBase.Services must be created in a Windows Service application project or another .NET Framework–enabled project that creates an .exe file when built and inherits from the ServiceBase class.