2010-07-28 25 views
0

我在我的WP7應用程序中有一個單例計時器,但我不知道如何讓它更新文本塊每次計時器滴答...有沒有辦法讓計時器的事件處理程序滴答滴答,然後用正確的時間更新文本框?C#WP7單身計時器

這裏是我嘗試使用,但不會工作:

public _1() 
    { 
     InitializeComponent(); 
     Singleton.TimerSingleton.Timer.Tick += new EventHandler(SingleTimer_Tick); 
    } 

    void SingleTimer_Tick(object sender) 
    { 
     textBlock1.Text = Singleton.TimerSingleton.TimeElapsed.TotalSeconds.ToString(); 
    } 

這裏是我的Timer.cs單:

http://tech-fyi.net/code/timer.cs.txt

+0

當你說它「不起作用」時會發生什麼?你有錯誤嗎? SingleTime_Tick沒有被調用嗎?更多細節將幫助您獲得答案。 – LBushkin 2010-07-28 15:46:17

+0

該應用程序不會讓我打電話給SingleTime_Tick。該應用程序表示沒有超載。 – Ryanb58 2010-07-29 02:26:29

回答

4
void SingleTimer_Tick(object sender) 

上面的方法應該是這樣的

void SingleTimer_Tick(object sender, EventArgs e) 

而當你問一個問題,請讓你的術語正確,並提供更多的細節。它會幫助你更快地找到正確的答案。例如,當你說「應用程序不會讓我打電話...」時,你的意思是編譯器給你一個錯誤。

+0

+1 - 在'GUI'線程中引發DispatcherTimer的Tick事件,所以*不應該有*任何問題。 – 2010-07-29 06:44:35

+0

@亞歷克斯·漢弗萊 - 沒錯,我忘了在描述中包含它。 – hawk 2010-07-29 12:42:45

3

SingleTimer_Tick大幹快上的非GUI執行的方法線。請致電

textBlock1.Invoke((=)=> textBlock1.Text = Singleton.TimerSingleton.TimeElapsed.TotalSeconds.ToString());

+0

它給了我錯誤,沒有比較調用:/? – Ryanb58 2010-07-28 18:03:24

+0

您發佈的問題不完整。看看我的其他答案。 – hawk 2010-07-29 03:00:05

0

我不確定你的計時器是哪種類型。一些用於在線程池線程上引發事件,而另一些用於在GUI線程上引發事件。如果你能告訴我們你的計時器的類型(System.Timers.Timer,System.Threading.Timer等),那麼我可以告訴你它的用途。但是,如果我沒有記錯,Tick用於GUI定時器,而Elapsed用於其他定時器 - 我可能是錯的。通常,對Start()或Enabled設置爲true的調用將觸發一個計時器對象。如果您希望定時器已經運行,您應該能夠檢查諸如Enabled之類的屬性以在連接事件之前聲明它正在運行。

除此之外,我會做一些printf樣式調試來檢查事件是否真的被引發。

+0

更新後的帖子:) – Ryanb58 2010-07-28 20:28:04

+0

是的,我確實啓動了定時器:) – Ryanb58 2010-07-28 20:28:42