手动启动后服务停止

时间:2019-10-11 09:22:09

标签: c# service

当我在没有启动参数的情况下启动服务时,他会在启动后立即停止。当我通过参数int时,它将永远在后台运行。

此服务只是定期删除一些旧文件。我尝试传递一个默认值,但是没有成功。

    protected override void OnStart(string[] args)
    {
        bool parseOk = false;
        base.OnStart(args);
        parseOk = int.TryParse(args[0], out dayLimit);
        if (!parseOk) dayLimit = 2;

        // Update the service state to Running.
        ServiceStatus serviceStatus = new ServiceStatus()
        {
            dwCurrentState = ServiceState.SERVICE_RUNNING
        };
        SetServiceStatus(this.ServiceHandle, ref serviceStatus);
        // Set up a timer that triggers every minute.
        System.Timers.Timer timer = new System.Timers.Timer
        {
            Interval = 3600000 // 3600000 milisecond = 3600 seconds = 1hrs
        };
        timer.Elapsed += new System.Timers.ElapsedEventHandler(this.TimerSuppress_Tick);
        timer.Start();
    }

我在他停止时收到的消息是:“本地计算机上的服务已声明并停止。如果其他服务或程序未使用某些服务,则会自动停止。为什么停止?我可以修复它并在默认值和启动参数之间进行选择吗?

1 个答案:

答案 0 :(得分:0)

如果不传递任何参数,则会引发异常

parseOk = int.TryParse(args[0], out dayLimit);

因为args [0]不存在。

尝试

if(args.Length > 0)
{
    parseOk = int.TryParse(args[0], out dayLimit);
}