Si vous pouvez éviter d'écrire un service de fenêtre, vous allez faciliter votre vie - les tâches planifiées peuvent être une meilleure option ici. Les services Windows sont mieux utilisés pour les tâches nécessitant une activité d'arrière-plan constante et non pour exécuter des tâches sur de longues périodes.
Toutefois, si vous devez définir ce paramètre comme étant un service Windows, vous ne devez pas définir un délai d'expiration de délai d'attente long pour . C'est vraiment une approche problématique. Que se passe-t-il si votre application est redémarrée? Comment saura-t-elle combien de temps cela fait-il dormir? Ou si le thread est redémarré?
Une meilleure approche consiste à écrire un enregistrement quelque part dans la base de données qui identifie le moment de l'importation suivante comme une date/heure. Votre service Windows peut se réveiller périodiquement (toutes les quelques minutes ou quelques heures) et voir si la date/heure actuelle est supérieure à cette valeur. Si c'est le cas, exécutez l'importation et mettez à jour la date d'exécution suivante dans la base de données à la prochaine exécution.
Si votre application est redémarrée, vous lisez simplement la valeur de la base de données et continuez comme avant.
Est-ce que cela crée un service qui se réveillerait une fois par mois? N'est-il pas préférable de créer un programme et de l'organiser chaque mois? Vous pouvez utiliser le planificateur intégré Windows ou nnCron (http://www.nncron.ru/), par exemple, pour cette tâche. –
J'ai eu de bons résultats avec les tâches planifiées sous Windows XP, Vista et Windows 7. –