6 votes

Obtenir la valeur d'un compteur System.Windows.Forms.Timer ?

J'ai un petit problème avec la minuterie du formulaire Windows. C'est une question très basique, mais j'ai cherché partout et je ne semble pas trouver la réponse (je mérite probablement une gifle).

J'ai besoin de pouvoir obtenir la valeur du timer, si son temps écoulé est supérieur à un intervalle de 500ms.

quelque chose comme

Timer.Elapsed >= 500

18voto

Jon Skeet Points 692016

Timer.Elapsed n'est pas une propriété retournant "le temps écoulé" - c'est un événement auquel vous vous abonnez. L'idée est que l'événement se déclenche de temps en temps.

Ce n'est pas vraiment clair si vous avez même veulent a Timer - peut-être System.Diagnostics.Stopwatch est vraiment ce que vous recherchez ?

var stopwatch = Stopwatch.StartNew();
// Do some work here

if (stopwatch.ElapsedMilliseconds >= 500)
{
    ...
}

4voto

David Heffernan Points 292687

J'ai besoin de pouvoir obtenir la valeur du timer, si son temps écoulé est supérieur à un intervalle de 500ms.

Un minuteur ne fournit pas d'interface permettant de vérifier le temps écoulé. La seule chose qu'ils font est de déclencher un événement lorsqu'ils expirent.

Vous devez enregistrer le passage du temps à l'aide d'un autre mécanisme, par exemple la Stopwatch classe.

2voto

called2voyage Points 217

Définissez la propriété Intervalle de la minuterie sur le nombre de millisecondes que vous souhaitez déclencher (500 dans votre exemple) et ajoutez un gestionnaire d'événement pour l'événement Tick.

1voto

J'ai écrit ceci rapidement, il peut y avoir quelques bugs mais cela vous donne une idée générale.

Timer timer = new System.Windows.Forms.Timer();
timer.Interval = 500;
timer.Elapsed += (s,a) => {
  MyFunction();
  timer.Stop();
}
timer.Start();

0voto

JeremyK Points 2067

Vous ne pouvez pas faire ça avec un Timer . Elapsed est l'événement qui est déclenché lorsqu'il a atteint 0.

Si vous voulez écouter quand l'événement s'est écoulé, enregistrez un listen to Elapsed . Interval est le membre qui permet de définir le temps d'attente.

Voir ici : http://msdn.microsoft.com/en-us/library/system.timers.timer(v=vs.100).aspx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X