Wyobraźmy sobie, że ten mały program działa:DateTime.Now vs czasu systemowego
while (true)
{
Console.WriteLine($"{DateTime.UtcNow} -> {DateTime.Now} tz={TimeZone.CurrentTimeZone.StandardName}/{TimeZoneInfo.Local.StandardName}");
await Task.Delay(TimeSpan.FromSeconds(1));
}
Kiedy zmienić strefę czasową systemu, gdy program jest uruchomiony app nie widzi zmian. Strefa czasowa i czas są takie, jakby strefa czasowa się nie zmieniła.
Aby aplikacja wyświetlała nową strefę czasową i czasową, muszę ponownie uruchomić aplikację.
Jeśli zmienię czas systemowy, zmiana czasu jest natychmiast pobierana.
Byłoby wspaniale, gdyby mógł mi pomóc z trzech pytań:
- jest to udokumentowane w dowolnym miejscu?
- dlaczego zmiana strefy czasowej nie została zmieniona podczas działania aplikacji?
- Czy mogę zrobić wszystko, aby aplikacja zmieniała ustawienia strefy czasowej, gdy jest uruchomiona?
Oto mały zrzut ekranu, aby pokazać aplikację .NET przy użyciu czas inny niż system operacyjny:
BTW. W systemie Windows IOT na Raspberry Pi mój eksperyment pokazuje, że po ponownym uruchomieniu aplikacji pojawi się nowa strefa czasowa, ale "stary" czas. Nowy czas zostanie odebrany po ponownym uruchomieniu systemu.
Czy wiesz również, jak osiągnąć to, co TimeZoneInfo.ClearCachedData robi w Universal Windows? Ta metoda nie jest dostępna. – mayu
W systemie Universal Windows musisz wywołać tę metodę za pomocą Reflection (i przetestować, czy działa na twoim urządzeniu) - została ona wykonana jako prywatna – mayu