C# Winform应用程序计时器没有´;我不能正常工作

C# Winform应用程序计时器没有´;我不能正常工作,c#,winforms,timer,C#,Winforms,Timer,我正在做一个winform应用程序,但计时器工作不正常。第一次起作用,然后就不起作用了。 代码如下: public void GetNewTurn(Turn turn) { _tmrStarTime = DateTime.Now; timer1.Start(); timer1.Tick += tmr1_Tick; } private void tmr1_Tick(object sender, EventArgs e) { //timer code here

我正在做一个winform应用程序,但计时器工作不正常。第一次起作用,然后就不起作用了。 代码如下:

public void GetNewTurn(Turn turn)
{
    _tmrStarTime = DateTime.Now;
    timer1.Start();
    timer1.Tick += tmr1_Tick;
}

private void tmr1_Tick(object sender, EventArgs e)
{
    //timer code here
    timer.stop();
}
因此,我们的想法是: GetNewTurn是从另一个位置调用的函数。我第一次调用它时,效果很好,但没有。我在tmr1_勾号内设置了一个断点,我可以看到它在第一次运行时就正常了,然后就没有了。 在计时器属性中,我设置Enable=True。 我做错了什么?
谢谢

你不应该在第一个滴答声中停止tmr1\U滴答声

public void GetNewTurn(Turn turn)
{
    _tmrStarTime = DateTime.Now;
    timer1.Start();
    timer1.Tick += tmr1_Tick;
}

private void tmr1_Tick(object sender, EventArgs e)
{
    //the code for each tick 
}

你不应该在第一个滴答声中停止tmr1_滴答声

public void GetNewTurn(Turn turn)
{
    _tmrStarTime = DateTime.Now;
    timer1.Start();
    timer1.Tick += tmr1_Tick;
}

private void tmr1_Tick(object sender, EventArgs e)
{
    //the code for each tick 
}

在构造函数或OnLoad覆盖中仅添加一次处理程序

timer1.Tick += tmr1_Tick;

public void GetNewTurn(Turn turn)
{
  _tmrStarTime = DateTime.Now;
  timer1.Start();
}

在构造函数或OnLoad覆盖中仅添加一次处理程序

timer1.Tick += tmr1_Tick;

public void GetNewTurn(Turn turn)
{
  _tmrStarTime = DateTime.Now;
  timer1.Start();
}

您似乎在第一次滴答声后停止计时器。。。所以我希望它只运行一次。嗯……你在阻止它。那么,为什么在你停止它之后它还会继续运行呢?如果希望它继续运行,请删除
计时器.stop()。根据我上面看到的代码,我建议您使用一个进程,它可以独立触发和停止,并且您可以在每次调用该方法时创建多个进程GetNewTurn@Icemanind我在2秒钟后停止它,然后,当再次调用GetNewTurn函数时,它应该再次启动..在第一次滴答声后,您似乎正在停止计时器。。。所以我希望它只运行一次。嗯……你在阻止它。那么,为什么在你停止它之后它还会继续运行呢?如果希望它继续运行,请删除
计时器.stop()。根据我上面看到的代码,我建议您使用一个进程,它可以独立触发和停止,并且您可以在每次调用该方法时创建多个进程GetNewTurn@Icemanind我在2秒钟后停止它,然后,当再次调用GetNewTurn函数时,它应该再次启动..很好,为了正确的做事方式,但这并不能解决他的问题。@Verdolino我猜是的,因为他可能对Tick方法进行了多次调用。问题不在于停止计时器,而在于OP在“计时器代码”部分所做的任何事情。我猜。如果我将处理程序放入构造函数中,当我打开表单时,它会自动启动计时器。。我不想这样做。@Matisolver然后确保从设计器中禁用计时器。很好,这是为了正确的做事方式,但它不能解决他的问题。@Verdolino我猜是的,因为他可能对Tick方法进行了多次调用。问题不在于停止计时器,而在于OP在“计时器代码”部分所做的任何事情。我猜。如果我将处理程序放入构造函数中,当我打开表单时,它会自动启动计时器。。我不想要它。@然后确保从设计器中禁用计时器。我不,我在2秒后停止它(我没有写所有的代码。)我不,我在2秒后停止它(我没有写所有的代码…)