I timer sono oggetti che permettono l'esecuzione ripetuta di operazioni, con cadenza regolare e continua. Possiamo eseguire un timer per aggiornare, ad esempio, un contatore che informi l'utente della durata della sua sessione oppure attivare e disattivare alcuni elementi dell'interfaccia in modo temporizzato.
I timer sono strumenti di base per molti linguaggi e anche WinRT ne è fornito grazie alla classe ThreadPoolTimer e al metodo CreatePeriodicTimer.
Il metodo accetta i parametri per impostare la frequenza di esecuzione, l'handler che scatta all'arrivo della frequenza e l'handler che viene eseguito se il timer viene annullato.
int i = 0; TimeSpan period = TimeSpan.FromSeconds(1); var elapsedHandler = new TimerElapsedHandler((source) => { i++; Dispatcher.RunAsync( CoreDispatcherPriority.Normal, () => { tb1.Text = Convert.ToString(i); }); }); var destroyedHandler = new TimerDestroyedHandler((source) => { i = 0; Dispatcher.RunAsync( CoreDispatcherPriority.Normal, () => { tb1.Text = Convert.ToString(i); }); }); ThreadPoolTimer timer = ThreadPoolTimer.CreatePeriodicTimer(elapsedHandler, period, destroyedHandler);
Il periodo viene impostato con un TimeSpan e lo start avviene direttamente all'istanza del ThreadPoolTimer.
Come possiamo vedere nell'esempio, il codice che viene eseguito nell'handler su un thread diverso rispetto al thread dell'interfaccia, quindi se vogliamo riportare una informazione sui controlli dobbiamo usare il Dispatcher.
Oltre a CreatePeriodicTimer abbiamo a disposizione anche il metodo CreateTimer, che esegue una sola volta l'handler e non si ripete.
Il timer può essere interrotto invocando il metodo timer.Cancel();.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Short-circuiting della Pipeline in ASP.NET Core
Gestire errori funzionali tramite exception in ASP.NET Core Web API
Configurare policy CORS in Azure Container Apps
Code scanning e advanced security con Azure DevOps
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Installare le Web App site extension tramite una pipeline di Azure DevOps
Assegnare un valore di default a un parametro di una lambda in C#
Eseguire una query su SQL Azure tramite un workflow di GitHub
Effettuare delete massive con Entity Framework Core 7
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Ottimizzazione dei block template in Angular 17
I più letti di oggi
- Miglioramenti nelle performance di Angular 16
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- HTML5 con CSS e JavaScript
- Ottimizzazione dei block template in Angular 17
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!