TimeZoneChange事件的捕获

需求:在c#中要捕获TimeZone变化的事件。

经过简单的分析发现,c#中没有直接捕获TimeZone Change的事件,但是通过google搜索时,发现一个SystemEvents类提供了许多系统属性变化的时间,其中有一个就是TimeChange事件。考虑到TimeZone带来的附加效果就是Time的变化,所以在此利用了TimeChange事件,来捕获TimeZoneChange事件,具体的代码如下:

 

Code

Remarks:

由于TimeZoneInfo对象使用了缓存机制,即它会将获得的TimeZoneInfo缓存起来,在用户请求当前时区属性(Local)时,直接返回缓存的TimeZone,而不重新获取新的TimeZone,所以在获取新的TimeZone属性时,需要先清空Culture和TImeZone的缓存,如下所示:

 

            System.Globalization.CultureInfo.CurrentCulture.ClearCachedData();
            TimeZoneInfo.ClearCachedData();

 

posted on 2009-08-08 13:03  chinese_submarine  阅读(475)  评论(3编辑  收藏  举报