Créer un timer


Le composent Timer en C# permet d'exécuter une méthode après un délai ou de répéter une fonction entre chaque intervalle. Par exemple, il est possible de faire un chronomètre ou un minuteur avec ce composant.

Nous allons utiliser la classe Timer mais pour pouvoir l'utiliser, nous devons ajouter la bibliothèque System.Windows.Forms.

Ajout de la bibliothèque

Pour ajouter la bibliothèque à votre projet avec Visual-Studio, allez dans Projet > Ajouter une référence puis cliquez sur "Assemblys", cherchez et cochez System.Windows.Forms.

Ajout de la référence

Enfin vous devez ajouter le code suivant dans la classe où vous voulez implémenter votre système :

using System.Windows.Forms;

Si vous êtes sur un projet WindowsForms, vous n'avez pas besoin de suivre cette première étape.

Nous allons créer, instancier et paramétrer notre composant. Pour cela nous allons créer une variable de type Timer.

Déclaration des variables

class TutoTimer
{
     private Timer timerTest; //Déclaration de notre composant timer
     private int delay = 1000; //Délai de 1 seconde (valeur en millisecondes)
}

On a déclaré une deuxième variable delay qui servira de valeur à la propriété Interval du timer. Elle correspond à un délai de 1 seconde.

Instanciation et paramétrage

class TutoTimer
{
    ...
    public TutoTimer()
    {
        timerTest = new Timer();
        timerTest.Interval = delay;
    }
}

La propriété Interval permet de définir le délai en millisecondes entre chaque exécution de votre méthode. Par exemple si vous définissez un intervalle de 10000 alors toutes les 10 minutes, votre méthode s'exécutera (10 * 1000).

Il faut savoir que : 1 seconde = 1000 millisecondes

Un timer possède un événement Tick qui permet de déclencher votre méthode toutes les x millisecondes.

Abonnement

class TutoTimer
{
    ...
    public TutoTimer()
    {
        ...
        timerTest.Tick += TimerTest_Tick; //Abonnement à l'événement Tick du timer
        timerTest.Start(); //Activation du timer
    }

    private void TimerTest_Tick(object sender, EventArgs e)
    {
        //Cette méthode s'exécutera toutes les [delay] millisecondes
        //Vous pouvez ajouter votre code à exécuter après un certain délai ici
    }
}

La méthode TimerTest_Tick s'exécutera toutes les x millisecondes. Dans l'exemple, elle s'exécutera toutes les 1 seconde car on a défini la propriété Interval à 1000 (millisecondes). Dans cette méthode, vous pouvez ajouter votre code à exécuter.

La méthode Start permet d'activer le timer.

Vous pouvez aussi utiliser la méthode Stop pour l'arrêter.

using System.Windows.Forms;

class TutoTimer
{
    private Timer timerTest; //Déclaration de notre composant timer
    private int delay = 1000; //Délai de 1 seconde  (valeur en millisecondes)

    public TutoTimer()
    {
        timerTest = new Timer();
        timerTest.Interval = delay; //On définit l'intervalle entre chaque exécution

        timerTest.Tick += TimerTest_Tick; //Abonnement à l'événement Tick du timer
        timerTest.Start(); //Activation du timer
    }

    private void TimerTest_Tick(object sender, EventArgs e)
    {
        //Cette méthode s'exécutera toutes les [delay] millisecondes
        //Vous pouvez ajouter votre code à exécuter après un certain délai ici
    }
}