System.Windows.Forms.Timer继续运行

时间:2016-08-29 10:20:18

标签: c# winforms timer

我需要在表单加载10秒后显示一条消息。 我使用以下代码

private void Form1_Load(object sender, EventArgs e)
{
  SetTimeInterval();          
}

System.Windows.Forms.Timer MyTimer = new System.Windows.Forms.Timer();

public void SetTimeInterval()
{           
    MyTimer.Interval = ( 10 * 1000);
    MyTimer.Tick += new EventHandler(TimerEventProcessor);            
    MyTimer.Start();    
}

void TimerEventProcessor(Object myObject,EventArgs myEventArgs)
{
    MessageBox.Show("TIME UP");           

    MyTimer.Stop();
    MyTimer.Enabled = false;
}

尝试使用MyTimer.Stop()和MyTimer.Enabled = false,但是消息框每10秒显示一次。如何在第一次实例后停止它?

2 个答案:

答案 0 :(得分:8)

您的问题是MessageBox.Show()阻止电话。因此,在您关闭 MyTimer.Stop()后,MessageBox仅被称为

因此,在关闭MessageBox之前,每10秒会弹出一个新的。简单的解决方案是更改调用顺序:

void TimerEventProcessor(Object myObject,EventArgs myEventArgs)
{
    MyTimer.Stop();
    MyTimer.Enabled = false;
    MessageBox.Show("TIME UP");           
}

因此,只要您在显示消息框之前进入事件处理程序,计时器就会停止。

答案 1 :(得分:-1)

我会建议这种方法 转到theform.designer.cs 写这个代码

this.timer1.Enabled = true;
this.timer1.Interval = 10000;

并在你的.cs文件中执行此操作

private void timer1_Tick(object sender, EventArgs e)
{
    MessageBox.Show("msg");
}

对我来说非常适合。