Когда я нажимаю кнопку 1, значение табат сразу меняется с 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--;
}
}
Я поставил точку останова в строке while (tabataas> 0) и продолжал входить, и каждый раз, когда цикл while выполнялся, значение tabata уменьшалось на единицу, как и ожидалось, но когда я запускаю программу, она сразу же переходит на 1, в то время как метод timer1_tick продолжает работать.
Мой рабочий код ниже:
else
{
goSecondsLeft = 20;
restSecondsLeft = 10;
tabatas--;
lbTabatasRemaining.Text = "Tabatas remaining" + tabatas.ToString();
timerGo.Stop();
}
}
private void button1_Click(object sender, EventArgs e)
{
timerGo.Start();
}
1 ответ
В вашем цикле while
нет ничего, что могло бы вызвать задержку, поэтому он выполняется почти мгновенно. Возможно, вы какое-то время думали, что Timer.Start
блокируется, но это не так. Он просто запускает таймер в фоновом режиме и мгновенно возвращается.
Не уверен, что именно вы пытаетесь сделать, но если вы хотите, чтобы переменная tabatas
уменьшалась во времени, удалите цикл и вместо этого уменьшите значение переменной в обработчике событий таймера.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.