2010-04-02 6 views
5

Estoy tratando de ejecutar varios servicios similares a través de ServiceBase.Run(ServiceBase[]) pero solo está ejecutando el primero. MSDN no lo niega explícitamente; ¿significa este fragmento que todos deben ser tipos diferentes? (La negrita es por mí, no MSDN)C#, Servicios de Windows: ServiceBase.Run con varios servicios del mismo tipo

llamada esta sobrecarga en la función main() del ejecutable del servicio para cargar una serie de servicios asociados .

Respuesta

7

Esa es la intención. La idea aquí es que puede tener un solo ejecutable crear "servicios múltiples" en lugar de un solo tipo de servicio.

Cuando se registra un servicio en el SCM, se espera que cada servicio sea único. Esto sugeriría (y creo que es el caso) que cada elemento de su matriz debe ser una implementación única de ServiceBase.

Si realmente está tratando de tener múltiples copias del mismo servicio , me gustaría reflexionar sobre el sistema de diseño. Simplemente haga que el servicio active varios subprocesos utilizando el mismo método, y proporcionará el mismo efecto con una única instancia de servicio.

+0

Los hilos múltiples eran el diseño original y solo estaba experimentando con esto. Gracias por aclarar eso para mí. –

+1

Debería ser posible tener 2 Servicios implementando el mismo tipo. Simplemente debe asegurarse de que cada servicio tenga un nombre de servicio único. Este escenario es particularmente útil si desea tener 2 servicios con la misma funcionalidad pero con diferentes configuraciones. Diga diferentes carpetas compartidas para leer archivos de diferentes bases de datos para conectarse. He creado una biblioteca de servicios de Windows llamada Daemoniq. Es compatible con la ejecución de múltiples servicios de Windows en un solo proceso. http://code.google.com/p/daemoniq/wiki/MultipleWindowsServicesOneProcess. –

+0

Si bien es posible, tan pronto como los nombre por separado, son, en esencia, dos servicios separados;) Dicho esto, su enfoque está bien. –

Cuestiones relacionadas