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
Gestione dell'annidamento delle regole dei layer in CSS
Creare una libreria CSS universale: Cards
Utilizzare i primary constructor di C# per inizializzare le proprietà
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Le novità di Angular: i miglioramenti alla CLI
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Eseguire una ricerca avanzata per recuperare le issue di GitHub
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Creare una libreria CSS universale: i bottoni
Ottimizzare la latenza in Blazor 8 tramite InteractiveAuto render mode