1

2つのWindowsサービスがあります。XとYと呼びます。Xはアプリケーションの一般的な機能を処理し、YはXを最新の状態に保つために存在します。これは、Xの更新をチェックすることによって行われます。更新が存在する場合は、それらをダウンロードし、Xをシャットダウンし、新しいファイルをコピーして、Xを再起動します。

ただし、YにもXに対して同じことをしてもらいたいのですが、私の懸念は、各サービスが相互にシャットダウンする可能性があることです。つまり、サービスが再起動されることはありません。

私は3つの解決策を考えることができます:

  1. 更新されない3番目のサービスZを維持します。このサービスは、各サービスが1分以上シャットダウンされているかどうかのみをチェックし、シャットダウンされている場合は再起動します。とにかく、これは悪いことではありませんが、更新できるようにしたいと思います。これにより、元の問題が再び発生します。
  2. XがY自体を更新する前に更新されているかどうかを確認するように、レジストリのロックを維持します。その逆も同様です。
  3. 各サービスに、OnStopメソッドで他のサービスを開始させる。ただし、これは少しハックなようです。

この問題の適切な解決策は何ですか?

4

1 に答える 1

1

最終的にSystem.Threading.Mutexを使用しました。両方のサービスは常に同じマシンで実行されるため、非常に簡単なソリューションです。

于 2010-06-08T16:03:29.183 に答える