0

私は 64 ビットの Windows サービス プロジェクトを 1 つ持っていますが、Windows サービスと同じ有効期間を持つ 32 ビットの実行可能ファイルが 1 つ必要です。64 ビット アプリ ドメインは 32 ビット dll をロードできないため、64 ビット Windows サービスの OnStart() 関数内でこの 32 ビット実行可能ファイルを起動する必要があります。この 32 ビット実行可能ファイルの寿命をどのように維持すればよいのでしょうか? 基本的に私が今やったことは、実行可能ファイルを OnStart() で起動し、OnStop() で終了することです。

しかし、私が今懸念しているのは、この 32 ビットの実行可能ファイル (プロセス) が Windows サービスの実行中に強制終了またはクラッシュした場合はどうなるかということです。再起動する必要があります。Windows サービスには、他のプロセスを監視できる場所または機能があり、これらのプロセスが強制終了された場合はいつでも再起動できますか? または、ネストされた Windows サービスについて考えることができますが、このトピックに関する有用な資料が見つかりません。

助けてくれてありがとう!

4

1 に答える 1

1

私が個人的に行うことは、両方の実行可能ファイルを Windows サービスとして構成することです。これにより、プログラムが正しく実行されていることを確認するために、意図した方法で ServiceController を使用できます。あるサービスを別のサービスの前提条件に設定することもできます。

サービスからアプリケーションを起動することはお勧めしません。これにより、かなりの問題が発生します...

たとえば、アプリケーションはどのユーザーの下で実行されますか?

ServiceController ルートを下って、両方の部分をサービスにすることは、間違いなく私の好みのルートです。

設計の観点からは、常に実行され、インターフェイスを必要としない実行可能ファイルは、実際には Windows サービスである必要があります。これにより、オペレーティング システムが正しいスケジューリングを行い、必要に応じてプログラムを自動的に再起動できるようになります。問題になる。

于 2012-04-10T11:36:12.043 に答える