如何自行重启Windows服务C#

时间:2015-02-10 12:23:45

标签: c# windows-services

我创建了一个服务,我通过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);
            }

如何在服务停止时以逻辑方式重新启动服务,它将不会执行下一行代码。

1 个答案:

答案 0 :(得分:4)

右键单击该服务并选择其属性,然后选择恢复选项卡。将服务设置为在第一次失败失败后重新启动。然后重新启动服务,只需调用Environment.Exit(1),Windows将重新启动服务。