调用方法时,计时器和表单不会关闭

时间:2009-12-29 20:04:55

标签: c# methods timer

我有三个单独的计时器在每个_Tick中调用一个方法。这个方法按预期工作正常,但在其中是一个if语句,它检查两个值是否为<或者>而不是一个数字:

if ((x < y) || (x > z))
{

}

在此声明中,我想停止这三次,显示一个消息框并处理该表单。这是我正在使用的代码:

if ((x < yArray[0]) || (x > yArray[1]))
{
   frmFooBar barFoo = new frmFooBar();
   barFoo.tmrOne.Stop();
   barFoo.tmrTwo.Stop();
   barFoo.tmrThree.Stop();
   MessageBox.Show(GlobalVariables.aVariable+ " is dead.");
   barFoo.Dispose();
}

条件工作正常,因为当任一语句为真时,我会在每个tick中获得一个MessageBox弹出窗口。我遇到的问题是这些形式功能都没有起作用。 tmrOne,两个继续运行,表单没有关闭。

我还是C#的新手,所以也许我的问题很明显,但任何帮助都会很棒!谢谢。

2 个答案:

答案 0 :(得分:3)

你在你的方法中这样做:

frmFooBar barFoo = new frmFooBar(); 
barFoo.tmrOne.Stop(); 
barFoo.tmrTwo.Stop(); 

这会创建一个新的frmFooBar实例,并且对已经运行的实例没有影响。

如果在表单上的计时器的tick事件中发生这种情况,您将需要使用“this”,因为这将是当前运行的表单:

this.tmrOne.Stop();
this.tmrTwo.Stop();

这样,您就可以停止当前正在运行的表单上的计时器。

答案 1 :(得分:0)

关闭你需要使用form.Close();你可以使用this.Close();如果你想关闭你的形式。 停止计时器使用Timer.Enabled = false; 希望它有所帮助 阿米特