如何等待计时器停止

本文关键字:计时器 等待 何等待 | 更新日期: 2023-09-27 18:20:04

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

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

我希望标签状态在计时器1结束后可见。

    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();
        }
    }

提前谢谢。

如何等待计时器停止

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

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;
    }
}

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

第二个方法。

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

这不是一个干净的解决方案,但您可以创建一个新的线程和轮询"timer.Enabled",直到它变为false。