Windows服务从未从C#代码重新启动

时间:2015-08-03 07:32:35

标签: c# wcf windows-services

我已经编写了一个代码来重新启动我的Windows服务,但它永远无法正常工作。服务能够停止但永不重新开始。我的项目是Windows服务中的自托管WCF服务。下面是代码。

重新启动方法

    public static void RestartService(string serviceName)
    {
        try
        {
            ServiceController svc = new ServiceController(serviceName);
            if (svc.Status == ServiceControllerStatus.Running) svc.Stop();
            svc.WaitForStatus(ServiceControllerStatus.Stopped, new System.TimeSpan(0, 0, 20));
            svc.Start();
            svc.WaitForStatus(ServiceControllerStatus.Running, new System.TimeSpan(0, 0, 20));
            svc.Dispose();
        }
        catch (Exception ex)
        {
            Logging.WriteException(ex);
        }
    }

主程序

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    static void Main()
    {
        try
        {
            ServiceBase[] ServicesToRun =
            { 
                new MyService() 
            };
            ServiceBase.Run(ServicesToRun);
        }
        catch (Exception)
        {

        }
    }

1 个答案:

答案 0 :(得分:0)

管理服务重启的正确方法是使用Windows服务恢复操作,描述为here

它们允许您告知服务控制管理器在发生故障时要执行的操作,包括任何重新启动操作,尝试重新启动的次数以及尝试之间等待的时间。

这比你在服务代码本身写的任何内容都要强大。