2016-10-06 10 views
1

Я использую ServiceController.WaitForStatus в первый раз, чтобы ограничить время, потраченное на то, чтобы попытаться запустить службы, которые не запустится. Мое предположение, чтобы использовать его как это:Предоставляет ли 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 может взять на себя, чтобы попытаться установить статус перед ожиданием. Имеет ли это?

+0

[Нет] (https://msdn.microsoft.com/library/35st9aw1 (v = vs.110) .aspx). Из Документов: * Используйте WaitForStatus, чтобы приостановить обработку приложения до тех пор, пока служба не достигнет необходимого статуса. * Вот и все. – makadev

+0

@makadev Сделай это ответом, и я соглашусь. – ProfK

+0

Что у нас есть голос, маленький человек? Я не знал, означает ли * обязательный статус * тот, что был в вызове 'WaitForStatus', или один в запросе настройки статуса. – ProfK

ответ

1

No.

From MSDN Documentations: Использование WaitForStatus приостановить обработку заявки, пока услуга не достигнет требуемого положения.

Все это только приостанавливает вызывающий поток и проверяет статус - как указано в документации - каждые 250 мс, пока не будет достигнуто ни состояние обслуживания, ни тайм-аут.