martedì 6 ottobre 2026

Eseguire una funzione a intervalli regolari con C# e Windows Forms

Il frammento di codice riportato di seguito illustra una tecnica, in ambiente C# e Windows Forms, per eseguire una funzione a intervalli regolari.
Le operazioni vengono gestite tramite la classe Timer di Windows Forms che, una volta configurata, genera periodicamente l'evento Tick, all'interno del quale è possibile richiamare la funzione desiderata.

Di seguito viene riportato un esempio per illustrare questa tecnica.

Dichiarazione del Timer
A livello di form, dichiariamo un oggetto della classe Timer e una variabile booleana che utilizzeremo per evitare che la funzione venga eseguita nuovamente mentre è ancora in corso un'esecuzione precedente.


C#
 

System.Windows.Forms.Timer timerRipeti;

 bool inEsecuzione = false;




Gestione dell'evento Tick
Creiamo quindi un gestore per l'evento Tick del Timer.



C#

private void TimerRipeti_Tick(object sender, EventArgs e)

{

    if (inEsecuzione)

        return;

           

    try

    {

        inEsecuzione = true;

        NomeFunzione();

    }

    finally

    {

        inEsecuzione = false;

    }

}



La variabile inEsecuzione permette di verificare se la funzione è già in esecuzione. In questo modo, nel caso in cui venga generato un nuovo evento Tick mentre l'operazione precedente non è ancora terminata, la nuova esecuzione viene ignorata.

Configurazione del Timer
Nell'evento Load della form inizializziamo il Timer, colleghiamo il gestore dell'evento Tick e impostiamo l'intervallo di esecuzione.

Nell'esempio seguente la funzione verrà richiamata ogni minuto:


C#

  timerRipeti = new System.Windows.Forms.Timer();

  timerRipeti.Tick += TimerRipeti_Tick;

 

            

  int minuti = 1; // minuti

  timerRipeti.Interval = minuti * 60 * 1000;


Infine, per avviare effettivamente il timer, è necessario chiamare il metodo Start():
timerRipeti.Start();

Nessun commento: