Procedura: scrivere servizi a livello di codice
Aggiornamento: novembre 2007
Se si sceglie di non utilizzare il modello di progetto dei servizi Windows, è possibile scrivere i propri servizi impostando l'ereditarietà e altri elementi di infrastruttura. Quando si crea un servizio a livello di codice, è necessario attenersi a diversi passaggi gestiti automaticamente nel modello:
Impostare la classe di servizio in modo che erediti dalla classe ServiceBase.
Creare un metodo Main per il progetto di servizio che definisca i servizi da eseguire e chiami il metodo Run.
Eseguire l'override delle routine OnStart e OnStop e scrivere il codice che devono eseguire.
Nota: Il modello Servizio Windows e le relative funzionalità non sono disponibili nell'edizione Standard di Visual Studio.
Per scrivere un servizio a livello di codice
Creare un progetto vuoto, quindi creare un riferimento agli spazi dei nomi necessari seguendo le istruzioni riportate di seguito.
In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo Riferimenti e scegliere Aggiungi riferimento.
Nella scheda .NET Framework scorrere su System.dll e fare clic su Seleziona.
Scorrere su System.ServiceProcess.dll e fare clic su Seleziona.
Scegliere OK.
Aggiungere una classe, quindi configurarla in modo che erediti dalla classe ServiceBase:
Public Class UserService1 Inherits System.ServiceProcess.ServiceBase End Class
public class UserService1 : System.ServiceProcess.ServiceBase { }
public class UserService1 extends System.ServiceProcess.ServiceBase { }
Per configurare la classe di servizio, aggiungere il codice seguente:
Public Sub New() Me.ServiceName = "MyService2" Me.CanStop = True Me.CanPauseAndContinue = True Me.AutoLog = True End Sub
public UserService1() { this.ServiceName = "MyService2"; this.CanStop = true; this.CanPauseAndContinue = true; this.AutoLog = true; }
public UserService1() { this.set_ServiceName("MyService2"); this.set_CanStop(true); this.set_CanPauseAndContinue(true); this.set_AutoLog(true); }
Creare un metodo Main per la classe, quindi utilizzarlo per definire il servizio che sarà contenuto nella classe. Il nome della classe è userService1:
Shared Sub Main() System.ServiceProcess.ServiceBase.Run(New UserService1) End Sub
public static void Main() { System.ServiceProcess.ServiceBase.Run(new UserService1()); }
public static void main() { System.ServiceProcess.ServiceBase.Run(new UserService1()); }
Eseguire l'override del metodo OnStart, quindi scrivere il codice da eseguire all'avvio del servizio.
Protected Overrides Sub OnStart(ByVal args() As String) ' Insert code here to define processing. End Sub
protected override void OnStart(string[] args) { // Insert code here to define processing. }
protected void OnStart(System.String[] args) { // Insert code here to define processing. }
Eseguire l'override degli altri metodi per i quali si desidera definire un comportamento personalizzato e scrivere il codice appropriato per ciascuno di essi.
Aggiunta dei programmi di installazione necessari per l'applicazione di servizio. Per ulteriori informazioni, vedere Procedura: aggiungere programmi di installazione all'applicazione di servizio.
Generare il progetto. Per effettuare questa operazione, scegliere Genera soluzione dal menu Genera.
Nota: Non è possibile eseguire un progetto di servizio premendo F5.
Creare un progetto di installazione e le funzionalità personalizzate necessarie per l'installazione del servizio. Per un esempio, vedere Procedura dettagliata: creazione di un'applicazione di servizio per Windows nella finestra Progettazione componenti.
Installare il servizio. Per ulteriori informazioni, vedere Procedura: installare e disinstallare servizi.
Vedere anche
Attività
Procedura: creare servizi Windows
Procedura: aggiungere programmi di installazione all'applicazione di servizio
Procedura: registrare informazioni sui servizi
Procedura dettagliata: creazione di un'azione personalizzata