Comment faire pour exécuter du code en c# de service une fois par jour à la même heure?
Donc voici mon problème, j'ai besoin de faire un c# service qui s'exécute sur un serveur qui se fichier sur ftp une fois par jour à 3h du matin. Je pense que je peux le faire avec un fil.sleep() ou comparer les DateTime.Maintenant, avec 3h du matin....
Avez-vous une meilleure solution?
Merci beaucoup pour votre aide!
OriginalL'auteur Bigballs | 2009-09-03
Vous devez vous connecter pour publier un commentaire.
Bien meilleure solution, laisser windows faire pour vous, en utilisant Tâches Planifiées.
Si elle ne doit être exécutée qu'une fois par jour, alors je voudrais aller pour cela. Même Google n' 😉
EDIT:
Pour répondre à un commentaire, c'est comme Fredrik a dit. C'est une Option Avancée, que vous pouvez ouvrir en tant que la tâche est mis en place, contenant une case à cocher intitulée: "
Run only if logged on
", ce qui est faux pour commencer.C'est certainement le chemin à parcourir; alors que votre application n'utilise pas de mémoire alors que c'est seulement en attente d'être exécuté demain.
Changer le C# de Service pour une application Windows pas de formes.
Les Services sont des applications qui s'exécutent tous les temps. Les tâches planifiées sont les applications qui s'exécutent à des moments précis. +1.
si il n'y a pas de session ouverte sur le serveur effectue la tâche planifiée fonctionne ?
OriginalL'auteur Kyle Rozendo
Écrire une application console ou l'équivalent, et d'utiliser le Planificateur de tâches Windows (ou quelque chose comme ça de nos jours...) pour le faire fonctionner tous les jours.
OriginalL'auteur Tomas Aschan
Pour une solution flexible, vous pouvez utiliser cette. Ce n'est pas un service Windows, mais vous pouvez facilement l'intégrer dans un. Ou vous pourriez envisager de Quartz.NET qui est réputée pour être force industrielle (la version de Java est certainement).
OriginalL'auteur Vinay Sajip
J'ai utilisé des Tâches Planifiées avec succès pour les sauvegardes, mais j'ai un mot de prudence ...
Tâches planifiées ne sont pas être effectuée si vous vous déconnectez. Je ne sais pas si cela peut être overidden, mais j'ai été pris par des tâches non effectuées, car Windows automatiquement les mises à jour, redémarre et se trouve en attente pour moi de me connecter.
J'ai désactivé les mises à jour automatiques de Windows devrait DEMANDER d'abord.
Une autre considération est que 3H du matin est un moment où de nombreux utilisateurs devraient normalement être déconnecté.
Je dois dire que je n'ai jamais eu le problème moi-même. Toujours fonctionné à 100% pour moi.
OriginalL'auteur pavium
D'autres réponses sont bonnes. J'ai juste pensé que je ferais remarquer que le
est une mauvaise solution, même si vous dormez pendant un certain temps entre chaque case, il gaspille les ressources du système inutilement (et pas seulement dans vérification à plusieurs reprises le temps, mais aussi dans l'utilisation de la mémoire du programme).
OriginalL'auteur Artelius
Si vous attendez un fichier tous les soirs, au lieu de s'inquiéter quand il arrive, il suffit de faire un événement lancé quand il ne.
Regardez:
System.IO.FileSystemWatcher
Système de fichiers de l'Observateur sur MSDN
OriginalL'auteur omantn
Pourquoi ne pas mettre cela en place pour exécuter une tâche planifiée. Exécuter, puis sur quitter. Configurer Windows pour démarrer le processus en tant que tâche planifiée à 3:00 tous les jours.
OriginalL'auteur Michael Meadows
System.Threading.Timer
pourrait travailler pour vous.Documenté ici
OriginalL'auteur KB22