我创建了一个服务,我通过MSMQ向服务发送命令。
现在我需要重新启动服务,但当它到达stop命令时它只会抛出错误,或者因为执行此任务的服务停止而无法读取下一行。
我使用的代码是:
ServiceController service = new ServiceController(serviceName);
try
{
int millisec1 = Environment.TickCount;
TimeSpan timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds);
ShutdownService(serviceName, timeoutMilliseconds);
// count the rest of the timeout
int millisec2 = Environment.TickCount;
timeout = TimeSpan.FromMilliseconds(timeoutMilliseconds - (millisec2 - millisec1));
service.Start();
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
}
catch (Exception ex)
{
s_log.Error(ex);
}
如何在服务停止时以逻辑方式重新启动服务,它将不会执行下一行代码。
答案 0 :(得分:4)
右键单击该服务并选择其属性,然后选择恢复选项卡。将服务设置为在第一次失败失败后重新启动。然后重新启动服务,只需调用Environment.Exit(1)
,Windows将重新启动服务。