3

ServiceController.WaitForStatus起動しないサービスを起動しようとして無駄な時間を制限するために初めて使用しています。私の仮定は、次のように使用することです。

var sc = new ServiceController(_monitoredService);
var seconds = _startWaitTimeout / 1000;
sc.Start();
sc.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 0, seconds));
if (sc.Status != ServiceControllerStatus.Running)
{
    _logger.Warn($"'{_monitoredService}' did not start within {seconds} seconds.");
}

それから私の肩の小さな悪魔は、WaitForStatus待つ前にステータスを設定しようとするかもしれないと提案しました. そうですか?

4

1 に答える 1

3

いいえ。

MSDN ドキュメントから: WaitForStatus を使用して、サービスが必要な状態になるまでアプリケーションの処理を中断します。

以上で、呼び出し元のスレッドを一時停止し、ドキュメントに記載されているように、サービス状態またはタイムアウトに達するまで約 250 ミリ秒ごとにステータスをポーリングするだけです。

于 2016-10-06T11:39:08.467 に答える