0

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

ServiceController matchedService = //My Service!

//If statements and such

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

これで、MyServiceが実際にインストールされて実行されていることを確認できます。デバッグ中に管理者としてVisualStudio2008を実行していることがわかります。また、いくつかのIfステートメントの後で、プログラミングの.Stop()部分と.WaitForStatus()部分に到達することを確認できます。.Stop()呼び出しをステップオーバーすると、サービス自体が実行を継続することを私は知っています(サービスでそれを見てください、それは私に起こりますが、おそらく私はこれのためのより良いツールをつかむべきです。より多くの情報を提供する可能性のあるsysinternalsツールがあると確信しています)。.WaitForStatus()呼び出しをステップオーバーすると、基本的に停止ステータスを待つことになります。。。永遠に。ええと、昨日(2回)15分以上そのままにしておいたのですが、何も起こりません。次のコード行にたどり着くことはありません。それはボウイのスペースオディティとまったく同じように感じます(あなたは私が話している部分を知っています)。

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

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

サービスが停止されないのはなぜですか?これは勝利7の癖ですか?ServiceController、または一般的なWin Servicesを理解できないのですか?

4

1 に答える 1

0

さらに調査したところ、これはサービス自体の問題だと思います。

于 2010-05-13T12:39:43.943 に答える