Nello script di settimana scorsa abbiamo visto come le estensioni della Universal Windows Platform ci permettano di fare il riavvio di un device IoT facendo target su quella specifica piattaforma. Una volta che il device è stato correttamente riavviato, una delle prime operazioni che dovremo fare per riportarlo ad uno stato consistente sarà quella di aggiornare il timezone del device stesso così che venga sincronizzato, magari lato server.
Come visto nello script precedente, dobbiamo prima di tutto aggiungere l'estensione Windows IoT Extensions for the UWP all'applicazione e includere la capability systemManagement nel file di manifest, quindi possiamo sfruttare la classe TimeZoneSettings per applicare il timzeone corrente:
private async Task ApplyTimeZoneAsync() { if (TimeZoneSettings.CanChangeTimeZone) { var status = await TimeZoneSettings.AutoUpdateTimeZoneAsync(TimeSpan.FromSeconds(60)); switch (status) { case AutoUpdateTimeZoneStatus.Failed: case AutoUpdateTimeZoneStatus.TimedOut: // qualcosa è andato storto... break; case AutoUpdateTimeZoneStatus.Attempted: // il tentativo è stato recepito dal device, ma non è detto che // il nuovo timezone sia stato applicato correttamente break; } } }
Nel caso in cui si voglia impostare il timezone su un fuso differente, è sufficiente chiamare l'apposita API:
private void ChangeTimeZone() { if (TimeZoneSettings.CanChangeTimeZone) { // recupero il primo timezone utile var timezoneName = TimeZoneSettings.SupportedTimeZoneDisplayNames.FirstOrDefault(); // imposto il fuso TimeZoneSettings.ChangeTimeZoneByDisplayName(timezoneName); } }
E' sempre importante fare un controllo sulla proprietà CanChangeTimeZone, poiché il metodo che applica il nuovo fuso cercherà di impostarlo seguendo, in quest'ordine, GPS, rete cellulare, Wi-Fi ed indirizzo IP, pertanto, se il device non supporta nessuno di questi meccanismi, potrebbe generare un errore a runtime.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottimizzare le performance usando Span<T> e il metodo Split
Referenziare un @layer più alto in CSS
Utilizzare una qualunque lista per i parametri di tipo params in C#
Gestione file Javascript in Blazor con .NET 9
Triggerare una pipeline su un altro repository di Azure DevOps
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Introduzione alle Container Queries
Creare una libreria CSS universale: Nav menu
Testare l'invio dei messaggi con Event Hubs Data Explorer
Gestione degli stili CSS con le regole @layer
Proteggere le risorse Azure con private link e private endpoints
Creare agenti facilmente con Azure AI Agent Service