Чтобы добавить к тому, что написал "user1820848", потому что это тоже была моя проблема, если ваше событие System.timers.timer, по-видимому, не запускается, поместите everything в обработчик события вблок try / catch и ищите там любую проблему.Я попробовал все рекомендуемые методы для решения этой проблемы (или думал, что имел), включая переключение с system.timers.timer на system.threading.timer, и это тоже не сработало.
Я думаюпроблема усугубляется тем, что многие из нас переносят наши приложения с нашей рабочей станции, где мы можем подключиться к работающему сервису и убедиться, что он работает, на сервер, где у нас нет поддержки отладки.Таким образом, вы застряли с сообщениями журнала событий или сообщениями tracelistener, и совершенно странно, что событие не срабатывает.
У меня была ситуация, когда у меня на этом сервере три запущенных службы, выполняющих по существу один таймеркод.Я даже построчно шел по коду другого работающего сервиса, чтобы убедиться, что я работаю с system.timers.timer так же.Но другой сервис работает нормально, и этот, похоже, вообще не запускал событие.
Проблема, как оказалось, заключалась в том, что в моих первоначальных dim-заявлениях я запускал класс, которыйпытался подключиться к Oracle.Этот вызов не удался, но на самом деле не удался, потому что версия клиента Oracle на моей рабочей станции и сервере отличалась немного .Это произошло, когда CLR разрешал ссылки, поэтому он не был пойман в моих блоках try / catch базового класса.Если бы я отлаживал, отладчик пометил бы ошибку.Работая на сервере, CLR не мог рассказать мне о проблеме.Так что мой сервис просто сидел там на нераспознанной ошибке.
Помещение all в try / catch сразу указало на проблему.Сделайте попытку перед любыми объявлениями в этой подпрограмме.Если вы ошибаетесь в очень раннем утверждении, вот как вы его поймаете.
[Извините за отдельный ответ, но вы должны предоставить ответы, чтобы получить достаточно репутации, чтобы даже комментировать чужой ответ?!?]
[Редактировать: еще одна вещь, которую нужно попробовать, - это взять свой код из события таймера, поместить его в другую подфункцию / функцию, вызвать его из кода запуска, а также поместить вызов функции в свой таймер.событие.Несколько недель спустя, вернувшись на мою рабочую станцию, пытаясь запустить тот же код, и у меня возникает чувство, что мое событие таймера не вызывается, и я был здесь раньше.В самом деле!Но положить все в try / catch тоже не получается!?!Перенес его в вызов функции и Бэм, вот мое исключение - опять Oracle.Но он не появлялся даже с каждой строкой внутри try / catch, пока я не удалил код из события timer и попытался снова.]