Сервисная остановка после начала эксплуатации - PullRequest
0 голосов
/ 11 октября 2019

Когда я запускаю свой сервис без запускаемого параметра, он останавливается сразу после запуска. Когда я передаю параметр некоторому 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 голосов
/ 11 октября 2019

Если вы не передадите какой-либо параметр, будет выдано исключение

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

, так как args [0] не существует.

Попробуйте с

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