2012-07-31 30 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

相关问题