Question

J'ai une tâche à exécuter toutes les 30 secondes. Je peux faire l'une des deux choses suivantes:

  1. Écrivez une application en ligne de commande qui exécute la tâche une fois, attend 30 secondes, l'exécute à nouveau, puis se ferme. Je peux planifier cette tâche avec des tâches planifiées dans Windows pour s'exécuter toutes les minutes

  2. Ecrivez un service qui exécute une tâche de manière répétée en attendant 30 secondes entre chaque exécution.

Le numéro 1 est plus trivial, à mon avis et je choisirais de le faire de cette façon par défaut. Est-ce que je me dégonfle? Existe-t-il une raison pour laquelle je devrais en faire un service et non une tâche planifiée? Quels sont les avantages et les inconvénients des deux et lequel choisiriez-vous à la fin?

Était-ce utile?

La solution

J'ai lu récemment un blog sur cette question . Il existe de nombreuses bonnes raisons pour ne pas écrire un service pour exécuter un travail récurrent. De plus, cette question a déjà été posée:

https://stackoverflow.com/questions / 390307 / windows-service-vs-schedule-task Service Windows ou tâche planifiée, lequel préférons-nous?

Un des avantages de l’utilisation de la tâche planifiée est que, s’il existe un risque potentiel lié à l’exécution du service, tel qu’une fuite de mémoire ou une connexion réseau suspendue, le service Windows peut rester bloqué pendant un certain temps, ce qui affectera négativement d’autres. utilisateurs. D'autre part, la tâche planifiée est conçue pour être courte, de sorte que même en cas de fuite, l'effet est minimisé.

D’autre part, une des personnes interrogées dans l’une des questions ci-dessus a fait remarquer que la limite de précision du planificateur était comprise dans l’intervalle d’une minute. Il est donc possible que le planificateur ne puisse pas exécuter votre tâche toutes les 30 secondes avec précision.

Évidemment, il y a un certain nombre de compromis à prendre en compte, mais nous espérons que cela vous aidera à prendre une bonne décision.

Autres conseils

Si vous essayez de vous exécuter toutes les 30 secondes, je choisirais l'option 2. Il s’agit plutôt d’un travail en continu, dans ce cas. Les frais généraux de démarrage et d'arrêt du processus sont probablement plus importants que le processus lui-même, surtout si vous utilisez un minuteur approprié.

Si vous créez une tâche exécutée une fois par jour (ou plusieurs fois par jour), choisissez l'option 1 - utilisation d'une tâche planifiée.

À mon avis, le planificateur de tâches de Windows semble un peu floconneux. Je pense que vous obtiendrez un résultat plus fiable en cours d'exécution en tant que service.

En outre, un service peut conserver des ressources en mémoire, telles que la lecture des entrées d'un fichier, et ne doit le faire qu'au démarrage du service, pas toutes les 30 secondes.

30 secondes est un intervalle assez court (relativement parlant) entre les cycles de traitement. Comme les autres, le planificateur de tâches me préoccupe et je crains qu'un intervalle si court ne fasse qu'aggraver les problèmes que vous pourriez rencontrer si vous adoptiez cette approche. Si tel était mon projet, j'irais presque certainement avec le service.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top