OVH Cloud OVH Cloud

Creation d'un plannificateur de taches ?

4 réponses
Avatar
Durand David
Bonjour,

J'aimerai savoir si vous avez des pistes pour créer une sorte de
planificateur de tache.

Par exemple une tache doit s'exécuter toutes les 5 minutes.
Puis une autre tache tout les jours à 12h etc...
Et meme une tout les vendredi à 14h
Plusieurs taches pourraient aussi s'exécuter en même tant.

Je pars d'une liste de taches (en BD ou dans un fichier XML) qui contient
leur nom, leur fréquence d'execution ou leur heure d'execution...

Mais comment faire en .NET pour gérer cela ? Boucler sur les taches, lancer
la tache dans un thread ? J'suis un peu perdu à vrai dire.

4 réponses

Avatar
Pierre Alexis
Durand David a écrit :

J'aimerai savoir si vous avez des pistes pour créer une sorte de
planificateur de tache.

Par exemple une tache doit s'exécuter toutes les 5 minutes.
Puis une autre tache tout les jours à 12h etc...
Et meme une tout les vendredi à 14h
Plusieurs taches pourraient aussi s'exécuter en même tant.

Je pars d'une liste de taches (en BD ou dans un fichier XML) qui contient
leur nom, leur fréquence d'execution ou leur heure d'execution...

Mais comment faire en .NET pour gérer cela ? Boucler sur les taches, lancer
la tache dans un thread ? J'suis un peu perdu à vrai dire.



Tu crées un service qui s'exécutera en arrière-plan, ce service étant un
programme que tu réveilleras de temps en temps (par exemple toutes les
minutes) et qui contiendra une queue des tâches à exécuter. A chaque
réveil de ton appli, tu exécuteras toutes les tâches de la queue dont le
moment d'éxecution est antérieur ou égal à l'heure courante.

Pour exécuter tes tâches, je te conseille pour chacune d'elle de lancer
un nouveau thread séparé.

Voilà, voilà.

--
Pierre ALEXIS
Courriel :
FAQ Visual Basic : http://faq.vb.free.fr
Avatar
Zazar
Bonjour,

Tu crées un service qui s'exécutera en arrière-plan, ce service é tant un
programme que tu réveilleras de temps en temps (par exemple toutes le s
minutes)



Il me paraît plus pertinent de ne réveiller le service que lors de la
première tâche (au sens chronologique) à effectuer. Ca ne sert à rien de
vérifier toutes les minutes s'il y a une tâche à effectuer si on co nnaît
le moment où on la première tâche doit être effectuée.

--
Zazar
Avatar
Durand David
>Il me paraît plus pertinent de ne réveiller le service que lors de la
première tâche (au sens chronologique) à effectuer. Ca ne sert à rien de
vérifier toutes les minutes s'il y a une tâche à effectuer si on connaît
le moment où on la première tâche doit être effectuée.



Et comment faire ?
Avatar
Zazar
Bonjour,

Il me paraît plus pertinent de ne réveiller le service que lors de la
première tâche (au sens chronologique) à effectuer. Ca ne sert à rien de
vérifier toutes les minutes s'il y a une tâche à effectuer si on connaît
le moment où on la première tâche doit être effectuée.




Et comment faire ?



Il vous suffit à chaque lancement de votre appli ou à chaque
modification de la queue des tâches de calculer dans combien de temps
aura lieu la tâche suivante et de mettre un timer sur ce temps. Mais
sinon, vous pouvez aussi utiliser l'utilitaire AT fourni avec Windows
qui fait ça trés bien.

--
Zazar