2012-03-07 75 views
0

我的应用程序上有一个TextBlock。我想每秒更新一次以显示当前时间。如何在wp7应用程序上显示当前时间?

我应该怎么做?的第一件事,我虽然是要建立一个System.Thread.Timer的实例,并更新文本...

clockTimer = new Timer(o => 
{ 
    Dispatcher.BeginInvoke(() => 
    { 
     currentTime.Text = DateTime.Now.ToShortTimeString(); 
    }); 
}, null, 0, 1000); 

但它是确定调用Dispatcher每一秒?

如果我使用绑定,它的行为是什么?性能要好于拨打Dispatcher? (考虑有几个呼叫Dispatcher每秒和几个绑定)

回答

3

您可以改为使用DispatcherTimer。

事情是这样的:

 DispatcherTimer dt = new DispatcherTimer(); 
     dt.Interval = TimeSpan.FromMilliseconds(1000); 

     dt.Tick += (s, e) => { currentTime.Text = DateTime.Now.ToShortTimeString(); }; 

     dt.Start(); 

不应该有在做这个危害,只是不要太长时间流连在你的Tick事件。另外,如果你在绑定时使用它,你将必须有一个周围的计时器来更新你的绑定属性,所以,尽管我总是倾向于直接操纵控件的数据绑定,但它应该不管怎么样。

2

“可以每秒调用一次调度程序吗?”

这是非常值得商榷的。
如果这是应用程序的功能所必需的,那么你必须。
但是,移动设备只有在电池供电时才能使用。你的代码所做的每一个动作最终都会使用更多的能量。如果您可以编写(或设计)应用程序而不需要做太多的工作,那么您最终会避免更快耗尽电池。

背后的所有移动开发的一般原则是不做任何你不必做的工作,所以你可以延长电池寿命。

相关问题