2012-07-31 26 views
1

我有一個timer 10秒intervaltimer_Tick事件我做了一些東西通常需要一秒左右,但有時需要超過90秒。它將如何行動?這個事件是否同步等待eventhandler完成執行?我測試了但我仍然需要一個答案......定時器間隔小於函數在Tick事件

private void checkTimer_Tick(object sender, EventArgs e) 
{ 
    MessageBox.Show("Test"); 
    for (int i = 0; i < 2000000000; i++) 
    { 

    } 
    MessageBox.Show("Test"); 
} 

當我第一次蜱MessageBox後測試顯示。 我不點擊確定並等待另一個勾號。另一個MessageBox顯示在秒打勾等等......

MSDN Documentation我看到它是同步的...任何想法?

+0

RTM。請參閱http://msdn.microsoft.com/en-us/library/system.timers.timer.aspx – Maarten 2012-07-31 09:31:17

+0

您在timer_tick內部實際執行什麼任務?你可以給代碼嗎? – Cdeez 2012-07-31 09:34:18

+0

你從哪裏讀到它是同步的?我無法在您提到的鏈接所在的頁面上看到。 – 2012-07-31 09:57:23

回答

3

我解決了這個問題,在tick事件開始時添加了timer禁用功能,並在tick事件結束時啓用。這樣

private void checkTimer_Tick(object sender, EventArgs e) 
     { 
      checkTimer.Enabled = false; 
      MessageBox.Show("Test"); 
      for (int i = 0; i < 2000000000; i++) 
      { 

      } 
      MessageBox.Show("Test"); 
      checkTimer.Enabled = true; 
     } 
1

我什麼也看不到的,你鏈接到該提到它正在同步的System.Windows.Timers文檔。如果您希望每個Tick事件都等待上一個Tick Event完成。在處理程序開始時停止計時器,並在完成工作後重新啓動計時器。這就是MSDN文檔顯示的內容。

+0

看到我的答案。這是正確的,不是嗎? – levi 2012-07-31 10:10:20

+1

是的。我留下了我的回答,以澄清文檔中沒有提及正在同步的事件 – 2012-07-31 10:16:34

相關問題