質問

私の開発ボックスは Windows 7 (x64) マシンです。特定の状況でサービスが実行されているかどうかを確認して停止するコード (C#、.net 2.0) があります。

ServiceController matchedService = //My Service!

//If statements and such

matchedService.Stop();
matchedService.WaitForStatus(ServiceControllerStatus.Stopped);

これで、MyService が実際にインストールされ、実行されていることが確認できます。デバッグ中は Visual Studio 2008 を管理者として実行していると言えます。数回後にそれを確認することもできます もし ステートメントを実行すると、プログラミングの .Stop() と .WaitForStatus() の部分に行き着きます。.Stop() 呼び出しをステップオーバーしても、サービス自体は実行を続けるだけであることはわかっています(これを見てください) サービス, 、ただし、このためにはより良いツールを入手する必要があるかもしれないと思いました。詳しい情報を提供してくれる sysinternals ツールがあると思います)。.WaitForStatus() 呼び出しをステップオーバーすると、基本的に停止ステータスを待つことになります。。。永遠に。さて、昨日(2回)15分以上放置しましたが、何も起こりませんでした。コードの次の行に進むことはありません。まさにボウイの『スペース・オディティ』と同じような感じだ(私が話している部分はご存知だろう)。

MyService については、知らないことがたくさんあります。あなたには理解できないこと。できなかったこと。。。これははっきり言っておきます。MyService に依存するサービスはなく、MyService が他のサービスに依存することもありません。 補遺 MyOtherService と SonOfMyService はどちらも、コードのこの時点では正しく動作しているようです。これらのサービスはすべて同じ特性を共有しています (秘密の研究所で開発した独自のサービスであり、依存関係はありません)。MyService のインストールか何かに問題がある可能性はありますか?

この時点でデバッグを停止しても、MyService は引き続き実行中としてリストされることがわかります。 サービス (更新を押した後でも)。その後再起動しようとすると (またはアプリケーションを再度実行してこの時点に到達すると)、制御メッセージを受け入れることができないというメッセージが表示されます。その後、サービスは停止済みとして表示され、通常どおり起動できるようになります。

なぜサービスは停止されないのでしょうか?これはwin7の癖なのでしょうか?ServiceController、または一般的な Win Services について理解できていないのでしょうか?

役に立ちましたか?

解決

さらに調査した結果、これはサービス自体に問題があると思われます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top