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
Integrare LLM alle nostre applicazioni in .NET con MCP
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Arricchire l'interfaccia di .NET Aspire
Integrazione di Copilot in .NET Aspire
Configurare e gestire sidecar container in Azure App Service
Impostare automaticamente l'altezza del font tramite CSS
Pubblicare un MCP Server in GitHub MCP Registry
Configurare OpenAI in .NET Aspire
Ridurre il reflow cambiando il CSS
Ospitare n8n su Azure App Service
Modificare lo stile in una QuickGrid Blazor
Scrivere selettori CSS più semplici ed efficienti con :is()
I più letti di oggi
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Sfruttare una CDN con i bundle di ASP.NET


