2012-03-07 77 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

「可以每秒調用一次調度程序嗎?」

這是非常值得商榷的。
如果這是應用程序的功能所必需的,那麼你必須。
但是,移動設備只有在電池供電時才能使用。你的代碼所做的每一個動作最終都會使用更多的能量。如果您可以編寫(或設計)應用程序而不需要做太多的工作,那麼您最終會避免更快耗盡電池。

背後的所有移動開發的一般原則是不做任何你不必做的工作,所以你可以延長電池壽命。

相關問題