Qual è il modo corretto di scrivere servizi di Windows che l'aggiornamento a vicenda?
-
05-10-2019 - |
Domanda
Ho due servizi di Windows, che chiameremo X e Y. X gestisce la funzionalità generale per la mia domanda, e Y esiste per mantenere X aggiornati. Lo fa il controllo degli aggiornamenti di X. Se esistono, li scarica, si chiude verso il basso X, le copie dei nuovi file e riavviare X.
Tuttavia, mi piacerebbe Y per fare la stessa cosa per X. La mia preoccupazione, però, è che è possibile per ogni servizio di chiudere l'un l'altro, nel senso che non arrivano mai rinnovate.
mi viene in mente tre soluzioni:
- Mantenere un terzo servizio, Z, che non viene mai aggiornato, che solo i controlli se ogni servizio è stato arrestato per più di un minuto, e in caso affermativo, li riavvia. Questo non sarebbe un brutta cosa avere, in ogni caso, ma è sembra una cosa che mi piacerebbe essere in grado di aggiornare, che introduce il problema originale, ancora una volta.
- Il mantenimento di un blocco nel Registro di sistema, in modo tale che i controlli X se Y viene aggiornato prima di fare un aggiornamento per sé, e viceversa.
- Avere ogni servizio avviare gli altri servizi nel suo metodo OnStop. Questo sembra un po 'hacker, però.
Qual è la soluzione adeguata a questo problema?
Soluzione
Ho finito per usare System.Threading.Mutex. Entrambi i servizi saranno sempre eseguito sulla stessa macchina, quindi è una soluzione super facile.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow