Служба Windows запущена, но ничего не делает - .NET - PullRequest
3 голосов
/ 27 февраля 2010

У меня есть .NET Windows Service (.NET 3.5) с таймером (System.Timers.Timer). Метод OnElapsed выглядит следующим образом:

    private void OnTimerElapsed(object source, ElapsedEventArgs e)
    {
        lock (this)
        {
            timer.Stop();
            //process some stuff here..
            ProcessStuff();
            timer.Interval = GetTimerInterval();
            timer.Start();
        }
    }

Работает нормально, пока таинственным образом не перестает работать. Это происходит каждые x дней, и хотя служба имеет статус запущенной, она не запускает метод ProcessStuff (). Я использую log4net и ничего не регистрируется там или в журналах событий Windows. ProcessStuff () порождает несколько потоков для выполнения определенной работы.

Как мне решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 27 февраля 2010

Возможно ли, что ProcessStuff() или GetTimerInterval() выдает исключение, так что timer.Start() не выполняется?

Тогда вам, возможно, следует обернуть эту часть в try..catch и / или добавить некоторые записи, например:

timer.Stop();
try
{
  //process some stuff here..
  ProcessStuff();
}
catch (Exception ex)
{
  // log the exception?
}
timer.Interval = GetTimerInterval();
timer.Start();
0 голосов
/ 27 февраля 2010

У меня есть две идеи для вас. Создайте дамп и посмотрите, что работает, или используйте удаленный отладчик и посмотрите, что вы блокируете.

...