2つのWindowsサービスがあります。XとYと呼びます。Xはアプリケーションの一般的な機能を処理し、YはXを最新の状態に保つために存在します。これは、Xの更新をチェックすることによって行われます。更新が存在する場合は、それらをダウンロードし、Xをシャットダウンし、新しいファイルをコピーして、Xを再起動します。
ただし、YにもXに対して同じことをしてもらいたいのですが、私の懸念は、各サービスが相互にシャットダウンする可能性があることです。つまり、サービスが再起動されることはありません。
私は3つの解決策を考えることができます:
- 更新されない3番目のサービスZを維持します。このサービスは、各サービスが1分以上シャットダウンされているかどうかのみをチェックし、シャットダウンされている場合は再起動します。とにかく、これは悪いことではありませんが、更新できるようにしたいと思います。これにより、元の問題が再び発生します。
- XがY自体を更新する前に更新されているかどうかを確認するように、レジストリのロックを維持します。その逆も同様です。
- 各サービスに、OnStopメソッドで他のサービスを開始させる。ただし、これは少しハックなようです。
この問題の適切な解決策は何ですか?