2010-04-02 18 views
5

Sto provando a eseguire diversi servizi simili tramite ServiceBase.Run(ServiceBase[]) ma è in esecuzione solo il primo. MSDN non nega esplicitamente questo; questo estratto significa che devono essere tutti di diverso tipo? (Il grassetto è da me, non MSDN)C#, Servizi Windows: ServiceBase.Run con diversi servizi dello stesso tipo

chiamata questo overload nella funzione main() del file eseguibile del servizio per caricare una serie di servizi associati .

risposta

7

Questo è l'intento. L'idea qui è che puoi avere un singolo eseguibile creare "più servizi" invece di un solo tipo di servizio.

Quando un servizio è registrato con lo SCM, ci si aspetta che ogni servizio è unico. Ciò suggerirebbe (e credo che sia il caso) che ciascun elemento dell'array debba essere un'implementazione unica di ServiceBase.

Se si sta solo provando ad avere più copie dello stesso servizio , vorrei ripensare il tuo progetto. Basta che il servizio attivi più thread utilizzando lo stesso metodo e fornirà lo stesso effetto con una singola istanza di servizio.

+0

I molteplici thread erano il design originale e stavo solo sperimentando questo. Grazie per averlo chiarito. –

+1

Dovrebbe essere possibile avere 2 servizi che implementano lo stesso tipo. Devi solo assicurarti che ogni servizio abbia un nome di servizio univoco. Questo scenario è particolarmente utile se si desidera disporre di 2 servizi con la stessa funzionalità ma utilizzando diverse configurazioni. Dire diverse cartelle condivise per leggere i file da o diversi database a cui connettersi. Ho creato una libreria di servizi Windows chiamata Daemoniq. Supporta l'esecuzione di più servizi Windows in un unico processo. http://code.google.com/p/daemoniq/wiki/MultipleWindowsServicesOneProcess. –

+0

Mentre è possibile, non appena li nominate separatamente, sono essenzialmente due servizi separati;) Detto questo, il vostro approccio va bene. –

Problemi correlati