c# - .NET 定时器控件

标签 c# .net timer

我有一个 Windows 应用程序,它只是一个带有计时器控件的窗体。我已经设法将其追踪到以下情况:

private void timer1_Tick(object sender, EventArgs e)
{
    MessageBox.Show("Test");
    timer1.Enabled = false;
}

将一次又一次地打印测试,直到我停止程序。然而:

    private void timer1_Tick(object sender, EventArgs e)
    {
        //MessageBox.Show("Test");
        textBox1.Text += "t";
        timer1.Enabled = false;            
    }

只需在文本框中添加一个“t”即可。

谁能告诉我为什么 MessageBox.Show 导致函数在禁用计时器之前返回?

最佳答案

调用 MessageBox.Show 会阻止 timer1_Tick 的执行,直到您关闭消息框,所以调用 set timer1.Enabled = false; 在那之后才会发生。因此,计时器仍在运行,因此每次计时器触发时,timer_Tick` 仍会继续被调用,直到您在其中一个消息框上点击“确定”。

如果您想显示消息框以停止计时器再次触发,您需要的是:

private void timer1_Tick(object sender, EventArgs e)
{
    timer1.Enabled = false;
    MessageBox.Show("Test");
}

关于c# - .NET 定时器控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3306762/

相关文章:

c# - Windows Phone 8.1 和 Windows Phone 8 设备 - 它能工作吗

asp.net - 使用 VS2012 加密 Azure 的连接字符串

.net - 对 TextBlock 和 Run 元素使用相同的样式

java - 如何用Java代码重写或转换C#代码?

c++ - QT:计时器在 changeEvent 中不起作用,但它在 timerEvent 中起作用

c# - 返回已处理记录数的 SQL Server 存储过程

javascript - 尝试计算通过麦克风拾取的声音之间的时间间隔

c# - 在 MVVM 中给出一些命令来查看

c# - 使用 CQRS 处理中介管道中的错误/异常?

c# - 如何防止 iOS 崩溃报告器使 MonoTouch 应用程序崩溃?