Je travaille sur un programme qui devra supprimer un dossier (puis le ré-instancer) à une heure donnée de la journée et cette heure sera donnée par l'utilisateur. P>
L'heure sera probablement probablement pendant la nuit, car c'est quand personne n'accède au dossier (il est externe des heures de travail). Y a-t-il un moyen de déclencher cet événement à cette heure-là? P>
Je sais sur les minuteries, mais il y a-t-il un moyen plus facile de le faire sans une minuterie qui ticks et chèques pour voir quelle heure il est? P>
Merci. P>
6 Réponses :
Pensez à sortir de la boîte. P>
Pas besoin de codage sur ce type d'emploi - Utilisez Tâches planifiées , ils ont été sous Windows pendant longtemps. Vous pouvez lancer votre programme à partir de ceci. P>
Si vous devez déclencher une méthode à partir d'un service déjà exécutant em>, utilisez une minuterie et un test datetime.now code> contre votre heure cible. P>
Merci, bonne idée. A également trouvé ce lien qui pourrait s'avérer utile pour les autres: social.msdn.microsoft.com/forums/forums/en-us/cshaarpanta/thread/ ...
quand p>
Calculez le temps restant (en millisecondes) et définissez l'intervalle de la minuterie. p>
Cela nécessiterait une application pour être en cours d'exécution. Il pourrait être plus approprié d'exécuter de tels problèmes de chronométrage dans un service.
@CITRO, oui, mais cela nécessite la complexité et les autorisations de communication avec un service. Ne sachant pas ce que le reste de l'application fait, j'ai choisi le chemin le plus court.
Utiliser le planificateur Windows. Là, vous pouvez spécifier quel fichier est exécuté lorsque. P>
Si vous voulez le faire dans votre code, vous devez utiliser la classe de la minuterie et déclencher l'événement écoulé.
a. Calculez le temps laissé jusqu'à votre première heure d'exécution. P>
public void doStuff(object sender, ElapsedEventArgs e) { // Do your stuff and recalculate the timer interval and reset the Timer. }
Est-ce la seule tâche que votre programme est censé accomplir? Si oui, pourquoi ne pas utiliser le planificateur de tâches?
Vous ne pouvez pas configurer une minuterie pour cocher uniquement (maintenant, quand) .ToStalSeconds? Ce ne serait-il pas ce que vous vous moquez?