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
Paginare i risultati con QuickGrid in Blazor
Effettuare il binding di date in Blazor
Gestire undefined e partial nelle reactive forms di Angular
Inizializzare i container in Azure Container Apps
Semplificare il deployment di siti statici con Azure Static Web App
Verificare la provenienza di un commit tramite le GitHub Actions
Utilizzare i primary constructor di C# per inizializzare le proprietà
Hosting di componenti WebAssembly in un'applicazione Blazor static
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Ottimizzazione dei block template in Angular 17