63 votes

Comment déclencher l'événement timer.Elapsed immédiatement

J'utilise la System.Timers.Timer pour créer une minuterie avec un événement Timer.Elapsed Le fait est que l' Timer.Elapsed n'est déclenché pour la première fois qu'une fois l'intervalle écoulé.

Existe-t-il un moyen de Timer.Elapsed juste après le démarrage du chronomètre ?

Je n'ai trouvé aucune propriété pertinente dans la classe System.Timers.Timer

25voto

user1791983 Points 331

Je viens d'appeler le **ElapsedEventHandler** avec des paramètres nuls.

13voto

John Odom Points 487

Je sais que cette réponse est tardive, mais si vous souhaitez que votre System.Timers.Timer soit déclenché dans les 100 ms (intervalle par défaut), vous pouvez simplement initialiser l'objet Timer sans un intervalle spécifié, puis définir le intervalle dans la fonction appelée à ce que vous voulez. Voici un exemple de ce que j'utilise dans mon service Windows :

 private static Timer _timer;

protected override void OnStart(string[] args)
{
    _timer = new Timer(); //This will set the default interval
    _timer.AutoReset = false;
    _timer.Elapsed = OnTimer;
    _timer.Start();
}

private void OnTimer(object sender, ElapsedEventArgs args)
{
    //Do some work here
    _timer.Stop();
    _timer.Interval = 50000; //Set your new interval here
    _timer.Start();
}

8voto

ADNnetPonzo Points 146
Task.Run(() =>
{
   Timer_Elapsed(null, null);
});

Après la création/configuration de la minuterie, cela a bien fonctionné pour moi...

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