Temos este aplicativo de código aberto que possui três (3) serviços. Para o propósito desta pergunta, vamos chamá-los de A , B e C .
Agora, eles precisam ser fechados em uma ordem específica. Essa ordem seria A, depois B e C.
Se B desliga antes de A, então nos deparamos com todos os tipos de problemas. O mesmo é verdadeiro se C desligar antes de B ou A. Além disso, cada serviço pode demorar um tempo diferente para desligar devido ao número de usuários que o estava usando.
Oh, isso precisa ser embrulhado em um arquivo de lote do DOS ou algo que um usuário não-técnico poderia apenas dar um duplo clique para iniciar. (PowerShell não está fora de questão, mas eu nunca usei isso). Além disso, sou um codificador C # para que possa ser usado também.
De qualquer forma, quando a reinicialização é iniciada, o seguinte precisa acontecer:
1) Initiate shutdown of service A
2) When service A is down, it should trigger the shutdown of service B
3) When service B is down, it should trigger the shutdown of service C
4) When service C is down, it should trigger the START UP of service A
5) When service A is UP, it should trigger the START UP of service B
6) When service B is UP, it should trigger the START UP of service C
Então, como você pode ver, cada stop / start precisa esperar que o anterior esteja completamente terminado antes de prosseguir. E como cada serviço pode levar alguns segundos a alguns minutos, não podemos usar nenhum tipo de truque de tempo.
Sugestões muito apreciadas.
Obrigado!