Exécuter une opération toutes les x secondes pour y minutes en c#
J'ai besoin pour exécuter une fonction toutes les 5 secondes pendant 10 minutes.
- Je utiliser une minuterie pour l'exécuter pendant 5 secondes, mais comment puis-je limiter la minuterie à seulement 10 minutes?
OriginalL'auteur | 2009-04-24
Vous devez vous connecter pour publier un commentaire.
Saisie juste le temps que vous voulez arrêter et mettre fin à votre minuterie de l'intérieur, le temps écoulé gestionnaire. Voici un exemple (note: j'ai utilisé un
System.Threading.Timer
timer
. Sélectionnez la minuterie pour ce que vous faites. Par exemple, vous pourriez être après uneSystem.Windows.Forms.Timer
si vous écrivez en Winforms.)OriginalL'auteur JMarsch
Votre boucle de minuterie quelque chose comme ceci:
Vous avez raison, le stockage de la fin des temps serait mieux.
OriginalL'auteur Peter Mourfield
Diviser la Y minutes par le X de l'intervalle pour obtenir combien de fois il a besoin pour fonctionner. Après que vous avez juste besoin de compter le nombre de fois que la fonction a été appelée.
Dans votre cas, 10 min = 600 secondes /5 secondes = 120 appels nécessaires. Juste un compteur de garder une trace de combien de fois votre fonction a été appelée.
OriginalL'auteur user39113
Timer.Stop()
après 120 Tiques.OriginalL'auteur JP Alioto
il suffit d'utiliser une variable DateTime, pour le suivi de la fin et de redresser la situation avant de commencer. Le sur votre Écoulé gestionnaire d'événement, vérifiez si le signal est inférieur à la fin des temps. Si ce n'est pas le cas, l'arrêt de la minuterie.
OriginalL'auteur Darren Kopp
Vous pouvez calculer combien de temps votre fonction sera d'appel, et de créer décrémenter compteur, après avoir écoulé qui vous désabonner de cycle d'horloge. Ou vous pouvez Exécuter un autre timer qui ont tique de la période de 10 min et sur la tique, vous désabonner de graduation de minuterie d'appel de votre fonction.
OriginalL'auteur Maksim Kondratyuk
Noter l'heure de début. Dans chaque appel, tester si currentTime + 5 secondes > startTime + 10 minutes. Si oui, désactiver la minuterie.
Je préfère cette approche de la juste en cours d'exécution pour N tiques, comme les compteurs ne sont pas garantis à feu lorsque vous le souhaitez. Il est possible de 120 tiques peuvent courir plus de 10 minutes monde réel le temps.
OriginalL'auteur Adam Wright
Vous pouvez définir deux minuteries d'une durée de 5 secondes et l'autre d'une durée de 10min et désactiver le premier
OriginalL'auteur Hannoun Yassir
Vous pouvez utiliser une deuxième minuterie:
OriginalL'auteur scottm