Cuál es la forma correcta de escribir los servicios de Windows que se actualizan entre sí?

StackOverflow https://stackoverflow.com/questions/2932066

  •  05-10-2019
  •  | 
  •  

Pregunta

Tengo dos servicios de Windows, que llamaremos X e Y. X maneja la funcionalidad general para mi aplicación, e Y existe para mantener X hasta la fecha. Esto se hace mediante la comprobación de cambios a X. Si existen, las descarga, cierre de las X, copias de los archivos nuevos, y reiniciar X.

Sin embargo, me gustaría Y para hacer la misma cosa para X. Mi preocupación, sin embargo, es que es posible para cada servicio para cerrar el uno al otro, lo que significa que nunca se reinician.

Me puede pensar en tres soluciones:

  1. Mantener un tercer servicio, Z, que Nunca se actualiza, que sólo comprueba si cada servicio ha sido apagado durante más de un minuto, y si es así, los reinicia. Esto no sería una Lo malo de tener, de todos modos, pero parece como algo que me gustaría ser capaz de actualizar, que presenta el problema original, de nuevo.
  2. El mantenimiento de un bloqueo en el registro, de tal manera que los controles X si Y se actualiza antes de hacer una actualización en sí, y viceversa.
  3. Tener cada servicio inicia los otros servicios en su método OnStop. Esto parece un hacker poco, sin embargo.

¿Cuál es la solución adecuada a este problema?

¿Fue útil?

Solución

Terminé usando System.Threading.Mutex. Ambos servicios siempre se pueden ejecutar en la misma máquina, lo que es una solución fácil de super.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top