当我按下按钮1时,tabatas的值立即从8变为1然后timer1_tick方法正确运行一次。多次呼叫定时器有奇怪的结果
int goSecondsLeft = 20;
int restSecondsLeft = 10;
int tabatas = 8;
public Form1()
{
InitializeComponent();
}
private void timer1_Tick(object sender, EventArgs e)
{
if (goSecondsLeft >= 0)
{
lbGoOrRest.Text = "Go!";
lbSecondsRemaining.Text = goSecondsLeft.ToString() + " seconds";
goSecondsLeft--;
}
else if (restSecondsLeft >= 0)
{
lbGoOrRest.Text = "Rest";
lbSecondsRemaining.Text = restSecondsLeft.ToString() + " seconds";
restSecondsLeft--;
}
else
{
timerGo.Stop();
}
}
private void button1_Click(object sender, EventArgs e)
{
while (tabatas > 0)
{
lbTabatasRemaining.Text = "Tabatas remaining" + tabatas.ToString();
timerGo.Start();
tabatas--;
}
}
我把一个破发点的线,而(tabataas> 0),并在steping在每个while循环执行畑的值时下降一个预期,但是当我运行它,它去在timer1_tick方法继续运行的同时立即执行1。
我的工作下面的代码:
else
{
goSecondsLeft = 20;
restSecondsLeft = 10;
tabatas--;
lbTabatasRemaining.Text = "Tabatas remaining" + tabatas.ToString();
timerGo.Stop();
}
}
private void button1_Click(object sender, EventArgs e)
{
timerGo.Start();
}
可能是一个线程相关的问题。 –
为什么重新启动循环中的定时器?另外,定时器的间隔是多少? – Gusman
间隔是1000ms,我想让time1Tick方法中的代码执行8次。 –