如何等到计时器停止

时间:2014-08-31 12:19:45

标签: c# timer timertask

我需要等待下一行等待,直到计时器结束。

    public void animation(){
          timer1.start();
          labelStatus.Visibility=true;
    }

我希望在timer1完成后可以看到labelStatus。

    private void timer1_Tick(object sender, EventArgs e)
    {
        int fromX = lblMove.Location.X;
        int fromY = lblMove.Location.Y;

        if (fromY > moveToY)
        {
            Y = Y - 5;
            lblMove.Location = new Point(fromX, Y);

        }

        else if (fromY < moveToY)
        {
            Y = Y + 5;
            lblMove.Location = new Point(fromX, Y);
        }
        else
        {
            timer1.Stop();
        }
    }

提前感谢。

2 个答案:

答案 0 :(得分:1)

我能想到的最简单的解决方案是

public void animation(){  
    timer1.start();
    labelStatus.Visibility=false;
}

private void timer1_Tick(object sender, EventArgs e)
{
    [...]

    else if (fromY < moveToY)
    {
        Y = Y + 5;
        lblMove.Location = new Point(fromX, Y);
    }
    else
    {
        timer1.Stop();

        labelStatus.Visibility = true;
    }
}

这样,当您停止计时器时,您可以看到标签。还有很多其他方法可以做到这一点,但这应该很简单。

答案 1 :(得分:0)

第二种方法。

显然,Timer没有挂钩的“OnStopped”事件(除非您想尝试使用dispose)。但是,Timer有一个System.Timer.Timer.Enabled标志,用于告诉您它正在运行。

这不是一个干净的解决方案,但您可以创建一个新的Thread and Poll“timer.Enabled”,直到它变为false。