ServiceController.WaitForStatus 设置状态还是等待?
Does ServiceController.WaitForStatus set the status or just wait?
我第一次使用 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
可能会自己尝试在等待之前设置状态。是吗?
没有
From MSDN Documentations:
使用 WaitForStatus 暂停应用程序的处理,直到服务达到所需的状态。
就是这样,它只挂起调用线程并轮询状态 - 如文档中所述 - 每 250 毫秒轮询一次,直到达到服务状态或超时。
我第一次使用 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
可能会自己尝试在等待之前设置状态。是吗?
没有
From MSDN Documentations: 使用 WaitForStatus 暂停应用程序的处理,直到服务达到所需的状态。
就是这样,它只挂起调用线程并轮询状态 - 如文档中所述 - 每 250 毫秒轮询一次,直到达到服务状态或超时。