Служба Windows не будет записывать в файл журнала в цикле - PullRequest
0 голосов
/ 30 мая 2018

Я пишу свой первый Windows-сервис и для начала просто пишу в файл журнала, который работает отлично.Мне действительно нужен сервис для циклического прохождения записей в файле json, который я использовал в другом месте без проблем.Таким образом, моя служба запускает таймер и запускает событие каждые 60 секунд;

System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 60000; // 60 seconds  
timer.Elapsed += new System.Timers.ElapsedEventHandler(this.OnTimer);
timer.Start();

Это работает абсолютно идеально, и мое событие OnTimer таким образом;

public void OnTimer(object sender, System.Timers.ElapsedEventArgs args)
    {
        eventLog1.WriteEntry("Drive Space monitoring initiated", EventLogEntryType.Information, eventId++);
    }

Это помещает запись ввойти точно так, как я ожидаю каждые 60 секунд.Моя проблема возникает, когда я пытаюсь добавить цикл в событие OnTimer.Для простоты вот что я добавил;

int count = 4;
for(int x = 1; x <= count; x++)
{
    string msg = "This is just a counter: " + x.ToString();
    eventLog1.WriteEntry(msg, EventLogEntryType.Information, eventId++);
}

Это абсолютно не влияет, и никакие дальнейшие записи не добавляются в мой файл журнала при возникновении события OnTimer.

1 Ответ

0 голосов
/ 30 мая 2018

Используйте System.Threading.Timer вместо System.Timers.Timer.

System.Timers.Timer выдает проблему некоторое время при использовании в службе Windows и проглатывает все исключения.

...