8
votes

Comment exécuter du code dans le service C # une fois par jour à la même heure?

Voici donc mon problème, je dois faire un service C # en cours d'exécution sur un serveur qui reçoit un fichier ftp une fois par jour à 3 heures du matin. Je pense que je peux le faire avec un thread.sleep () ou en comparer la dateTime.now avec 3 heures du matin ....

Avez-vous une meilleure solution?

Merci beaucoup pour votre aide!


0 commentaires

6 Réponses :


4
votes

Écrivez une application de console ou équivalent et utilisez le planificateur Windows (ou quoi que ce soit appelé de nos jours ...) pour l'exécuter quotidiennement.


0 commentaires

1
votes

system.threading.Timer pourrait fonctionner pour vous.

documenté ici


0 commentaires

1
votes

Pourquoi ne pas définir cela pour exécuter comme tâche planifiée. Avez-le exécuter, puis quittez. Configurez Windows pour démarrer le processus en tant que tâche planifiée à 15h00 du matin par jour.


0 commentaires

2
votes

D'autres réponses sont bonnes. Je pensais juste que je soulignerais que

Comparer le DateTime.now avec 3h du matin

est une mauvaise solution, même si vous dormez pendant un certain temps entre chaque chèque, car il gaspille inutilement les ressources du système (non seulement en vérifiant à plusieurs reprises l'heure, mais également dans l'utilisation de la mémoire du programme).


0 commentaires

3
votes

J'ai utilisé des tâches planifiées avec succès pour des sauvegardes, mais j'ai un mot de prudence ...

Les tâches planifiées ne sont pas effectuées si vous vous déconnectez. Je ne sais pas si cela peut être caché, mais je n'ai pas été pris par des tâches non effectuées car Windows met à jour automatiquement, redémarre et siège à m'attendre à me connecter.

i Mises à jour automatiques désactivées - Windows devrait demander d'abord.

Une autre considération est que 3h du matin est un moment où de nombreux utilisateurs seraient normalement déconnectés.


2 commentaires

C'est ce que je pense ... J'ai essayé la tâche planifiée et après le redémarrage du serveur ne rien commencer ... merci!


Je dois dire que je n'ai jamais eu la question moi-même. Toujours travaillé à 100% pour moi.



2
votes

Si vous attendez un fichier tous les soirs, au lieu de vous inquiéter de quand il arrive, obtenez simplement un événement tiré quand il le fait.

regarder:

system.io.filesystemwatcher

Watteur du système de fichiers sur MSDN < / a>


0 commentaires