Я использовал Timer из System.Threading. И таймер запускался только один раз. Хотя когда я делал тестовую службу и через каждые 20с. писал дату в текстовый файл - все работало.
Потом я переделал и использовал Timer из System.Timers. И все заработало.
Скорее всего это связано из-за асинхронных методов, которые я использовал в своем приложении.