Qual è il modo corretto di scrivere servizi di Windows che l'aggiornamento a vicenda?

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

  •  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:

  1. 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.
  2. 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.
  3. Avere ogni servizio avviare gli altri servizi nel suo metodo OnStop. Questo sembra un po 'hacker, però.

Qual è la soluzione adeguata a questo problema?

È stato utile?

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
scroll top