手动启动后停止服务

问题描述 投票:0回答:1

[当我不使用启动参数启动服务时,他会在启动后立即停止。当我通过参数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();
    }

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

c# service
1个回答
0
投票

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

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

因为args [0]不存在。

尝试使用

if(args.Length > 0)
{
    parseOk = int.TryParse(args[0], out dayLimit);
}
© www.soinside.com 2019 - 2024. All rights reserved.