如何等待计时器停止
本文关键字:计时器 等待 何等待 | 更新日期: 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。