C# 计时器间隔小于滴答事件中的函数

C# 计时器间隔小于滴答事件中的函数,c#,.net,multithreading,C#,.net,Multithreading,我有一个10秒间隔的计时器,在计时器滴答声事件中,我做一些通常需要大约一秒钟的事情,但有时需要超过90秒。它将如何行动?此事件是否同步以等待eventhandler完成执行?我试过了,但我还是需要一个答案 private void checkTimer_Tick(object sender, EventArgs e) { MessageBox.Show("Test"); for (int i = 0; i < 2000000000; i++) { }

我有一个10秒间隔的计时器,在计时器滴答声事件中,我做一些通常需要大约一秒钟的事情,但有时需要超过90秒。它将如何行动?此事件是否同步以等待eventhandler完成执行?我试过了,但我还是需要一个答案

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

    }
    MessageBox.Show("Test");
}
当我在显示第一个勾选消息框后测试它时。我不会单击“确定”并等待另一个滴答声。另一个消息框显示在秒刻度上,以此类推


我在书中读到它是同步的。。。有什么想法吗?

我解决了这个问题,在滴答声事件开始时禁用计时器,在滴答声事件结束时启用计时器。像这样

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;
        }

我通过在滴答声事件开始时禁用计时器和在滴答声事件结束时启用计时器解决了这个问题。像这样

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;
        }

我在你链接到的System.Windows.Timers文档中没有看到任何提到它正在同步的内容。如果希望每个勾号事件等待上一个勾号事件完成。在处理程序开始时停止计时器,并在工作完成后重新启动。这就是MSDN文档显示的内容。

我在您链接到的System.Windows.Timers文档中没有看到任何提到它正在同步的内容。如果希望每个勾号事件等待上一个勾号事件完成。在处理程序开始时停止计时器,并在工作完成后重新启动。这就是MSDN文档所显示的。

RTM。查看您在计时器内实际执行的任务?你能给出代码吗?你在哪里读到它是同步的?我看不到你链接的页面上提到了这个.RTM。查看您在计时器内实际执行的任务?你能给出代码吗?你在哪里读到它是同步的?我看不到你链接的页面上提到了这一点。是的。我留下我的答案是为了澄清文档中没有提到正在同步的事件是的。我留下我的答案是为了澄清文档中没有提到正在同步的事件