多次调用TimeZoneInfo.ClearCachedData()方法

时间:2015-06-26 05:35:19

标签: c# wpf

我在尝试更改WPF应用程序中的时区信息时看到了一种奇怪的行为。我有一个应用程序,我通过Win32 API更改日期时间和/或时区设置。

我注意到如果我在第一次更改时区后调用TimeZoneInfo.ClearCachedData(),一切都按预期工作,我可以检查TimeZoneInfo.Local并将时区更新为我期望的那样,以及应用程序仍然有回应。

但是,如果我尝试再次更改时区(更改它的工作原理,因为我看到它在系统上更新),然后第二次调用TimeZoneInfo.ClearCachedData(),不知何故WPF导航控件停止工作 - 我有一个不再有效的后退按钮和按钮,可以将您带到其他不再有效的视图。这就像命令绑定刚刚消失了。命令处理程序内的断点不再被命中。如果我暂停应用程序,我看不到任何挂起的线程,CPU是正常的。

我试过在ThreadPool线程上调用TimeZoneInfo.ClearCachedData(),我尝试在Dispatcher线程上运行它,如果在运行时调用多次,结果相同。

一旦我从代码中删除了清除缓存的尝试,一切都按照我想要的方式工作,除了我的TimeZoneInfo.Local没有更新,这是我需要的。

当我更改时区时,我也没有任何对TimeZoneInfo.Local的引用。

如果有人能告诉我为什么会这样,我会很高兴。

0 个答案:

没有答案