1

作成したコンソールプログラムを使用して、実行中のサービスを停止しようとしています。これは私のコードです:

ServiceController sc = new ServiceController(ServiceName, ".");
sc.Stop();

次に、サービスステータスが停止に変わるのを待ちますが、これは発生しません。StopPendingがあり、Stoppedに移動しないようです。Services.mscを確認すると、停止していると表示され、タスクマネージャーでプロセスが終了しています。

永久に保留状態のままになりますか?私は何か間違ったことをしていますか?何かを変更する必要がある場合は、サービスのコードもあります。

4

1 に答える 1

5

私は何か間違ったことをしていますか?

サービスを停止した後、待機してみてください。

sc.Stop();
sc.WaitForStatus(ServiceControllerStatus.Stopped, TimeSpan.FromSeconds(25));

WaitForStatusメソッドは、サービスが指定されたステータスに達するか、指定されたタイムアウトが期限切れになるのを待ってから戻ります。

于 2012-05-07T11:06:23.943 に答える