我有timer
10秒interval
并且在timer_Tick
事件我做了一些通常需要大约一秒钟的事情,但有时需要超过90秒。它将如何行动?此事件是否同步以等待eventhandler
完成执行?我测试了但仍然需要答案...
private void checkTimer_Tick(object sender, EventArgs e)
{
MessageBox.Show("Test");
for (int i = 0; i < 2000000000; i++)
{
}
MessageBox.Show("Test");
}
当我在第一次勾选MessageBox
后进行测试时显示。 我没有点击OK 并等待另一个勾选。另一个MessageBox
显示在秒钟上,依此类推......
我读到它是同步的...任何想法?
答案 0 :(得分:3)
我通过在tick事件开始时添加计时器禁用并在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 :(得分:1)
我在System.Windows.Timers
文档中看不到任何与您提及的同步相关联的文档。如果您希望每个Tick事件等到上一个Tick事件结束。在处理程序启动时停止计时器,并在完成工作后重新启动。这就是MSDN文档所显示的内容。