Если вы не можете написать службу окон, вы упростите свою жизнь - запланированные задачи могут быть лучшим вариантом здесь. Службы Windows лучше всего использовать для вещей, где есть некоторая постоянная фоновая активность, которая должна произойти - не для запуска задач в течение длительного времени.
Однако, если вы должны сделать это службой Windows, то вы не хотите устанавливать тайм-аут ожидания с помощью таймера. Это определенно проблематичный подход. Что произойдет, если ваше приложение перезапустится? Как он узнает, как долго он спит? Или что, если поток перезапущен?
Лучшим подходом является запись записи где-то в базе данных, которая идентифицирует, когда следующий импорт должен происходить как дата/время. Служба Windows может периодически просыпаться (каждые несколько минут или часов) и видеть, превышает ли текущая дата/время это значение. Если это так, запустите импорт и обновите следующую дату запуска в базе данных в следующий раз для запуска.
Если ваше приложение перезагружено, вы просто читаете значение обратно из базы данных и продолжаете, как раньше.
Создает ли сервис, который просыпался бы раз в месяц? Разве не лучше создавать программу и планировать ее ежемесячно? Например, для этой задачи можно использовать встроенный планировщик Windows или nnCron (http://www.nncron.ru/). –
У меня были хорошие результаты с запланированными задачами в Windows XP, Vista и Windows 7. –