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
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Gestire la cancellazione di una richiesta in streaming da Blazor
Migliorare la sicurezza dei prompt con Azure AI Studio
Migliorare l'organizzazione delle risorse con Azure Policy
Collegare applicazioni server e client con .NET Aspire
Routing statico e PreRendering in una Blazor Web App
Limitare le richieste lato server con l'interactive routing di Blazor 8
Ottimizzare le pull con Artifact Cache di Azure Container Registry
Creare alias per tipi generici e tuple in C#
Eseguire script pre e post esecuzione di un workflow di GitHub
Gestione degli stili CSS con le regole @layer
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
I più letti di oggi
- Build 2015: segui con noi tutte le novità per gli sviluppatori in diretta da San Francisco
- Speciale Windows Live Services: come integrarli nelle proprie applicazioni
- Rilasciata la RTM di SQL Server 2012, la versione Express subito in download
- Build 2014: tutte le novità per gli sviluppatori in diretta da San Francisco
- .NET Managed provider per MySQL
- WS-I approva Basic Profile 1.0
- Due regali dal Tech-Ed USA 2004: WSE 2.0 e VS 2005 Team System
- VS 2005 e SQL Server 2005 Express da scaricare
- Microsoft aggiorna WinFS beta 1 per VS 2005
- Utilizzare CLEditor per consentire l'input di HTML in ASP.NET MVC