web-dev-qa-db-fra.com

Répéter une fonction toutes les quelques secondes

Je veux répéter une fonction à partir du moment où le programme s'ouvre jusqu'à ce qu'il se ferme toutes les quelques secondes. Quelle serait la meilleure façon de faire cela en C #?

52
user1071461

Utilisez une minuterie. Il existe 3 types de base, chacun adapté à des objectifs différents.

Utilisez uniquement dans une application Windows Form. Cette minuterie est traitée dans le cadre de la boucle de message, de sorte que la minuterie peut être gelée sous forte charge.

Lorsque vous avez besoin de synchronicité, utilisez celui-ci. Cela signifie que l'événement tick sera exécuté sur le thread qui a lancé le minuteur, ce qui vous permet d'effectuer des opérations d'interface graphique sans problème.

C'est le minuteur le plus puissant, qui déclenche des ticks sur un thread d'arrière-plan. Cela vous permet d'effectuer des opérations en arrière-plan sans geler l'interface graphique ou le thread principal.

Dans la plupart des cas, je recommande System.Timers.Timer.

78
Kendall Frey

Pour cela le System.Timers.Timer fonctionne mieux

// Create a timer
myTimer = new System.Timers.Timer();
// Tell the timer what to do when it elapses
myTimer.Elapsed += new ElapsedEventHandler(myEvent);
// Set it to go off every five seconds
myTimer.Interval = 5000;
// And start it        
myTimer.Enabled = true;

// Implement a call with the right signature for events going off
private void myEvent(object source, ElapsedEventArgs e) { }

Voir Classe de minuterie (.NET 4.6 et 4.5) pour plus de détails

42
IvoTops

Utilisez un minuteur . Gardez à l'esprit que .NET est livré avec un certain nombre de minuteries différentes. Cet article couvre les différences.

11
Brian Rasmussen