Bonjour,
Ma question ne me semble pas très originale et pourtant je ne trouves pas de réponses à mes questions. Ni ici, ni sur Google.
Je dois exécuter une tâche, tous les jours, à 4h00 du matin. Cette tâche doit télécharger des fichiers et faire des mises à jours dans une base de données.
La tâche est un traitement C# maison. Son développement est terminé. Maintenant je dois planifier son lancement.
Instinctivement, je me suis dit : "je vais créer un service windows, puis planifier son lancement tous les jours à 4h00 du matin."
Visiblement, il y a un biais intellectuel à associer "tâche planifiée et service windows".
Soit il est lancé automatiquement au démarrage de la machine (qui est un Windows serveur 2008 R2) soit il ne l'est pas. Il ne me semble pas possible de le lancer à la demande, à une heure donnée.
J'ai d'autres traitement du même type à planifier, le 1 de chaque mois à 2h00, tous les jours ouvrés à 2h00, tous les samedis à 1h00 etc, tous les jours toutes les heures, ...
Je pourrais jouer avec un timer qui regarde toutes les heures si l'heure est supérieure à 3:59:59 et inférieure à 4:59:59 mais c'est pas terrible...
Si la machine se relance à 4h30, j'aurais un cas à gérer etc.
Bref, j'ai passé beaucoup de temps à écrire du code fonctionnellement pertinent (ma fonctionnalité), mais j'ai pas très envie de réinventer la roue à créer un système de planification de tâche sous windows.
Pouvez-vous m'orienter sur la technologie la plus pertinente ? Sachant que je suis moins mauvais en C# qu'en administration système.
Mon besoin :
- Lancer une tâche C# (exe ou dll) automatiquement à une fréquence (heure, jour, mois, ...) déterminée
- Assurer que la tâche n'est lancée qu'une seule fois (le traitement dure 20 minutes, sachant que je peux trouver une solution à ce besoin en C# pur)
- En cas de crash du système (reboot du serveur), si la tâche n'est pas terminée, la relancer (Là aussi, en C#, je peux trouver une solution)
- Ne pas nécessiter qu'une session soit ouverte (d'où mon envie de service)
Désolé si la question est triviale et/ou déjà abordée 20 fois, j'ai pas dû utiliser les bon mots clefs.
En vous souhaitant une bonne année : ))
Merci !
[Edit]
- En lançant Quartz.NET (http://quartznet.sourceforge.net/features.html) dans un service, ça doit répondre à mes besoins.
Ça me paraît quand même bien "compliqué" pour faire ça
- Schtasks.exe (http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx)
Euh, c'est une simple tâche planifiée mon besoin ? Ca a pas besoin d'une session active cette chose là ? J'ai l'impression de chauffer là.
Je ferais des tests demain. Enfin... Dans 5h00...
[Edit2]
- Bon, bah c'est une tâche planifiée "basique" mon truc. Avec accès aux ressources réseaux : (http://technet.microsoft.com/fr-fr/l...(v=ws.10).aspx)
C'est les tâches planifiée n'ont pas besoin de session utilisateur, c'est comme un service planifié visiblement.Quand l’option Exécuter même si aucun utilisateur n’a ouvert de session est sélectionnée, vous serez peut-être invité à fournir les informations d’identité du compte en enregistrant la tâche
Bouh, j'ai pas été bon sur ce coup ! Je laisse le topic pour ceux qui passerons après moi.
Si cela peut épargner quelques recherches à quelqu'un... Qu'il fasse un don de ma part à S.O.S Informaticien en détresse.
Partager