Я следовал примеру из Head First C# на DispatcherTimer.DispatcherTimer будет увеличивать интервал за каждый раз, когда он используется
Первый раз, когда я нажимаю кнопку, тикер увеличивается на 1 секунду, но в следующий раз, когда я нажимаю на кнопку, тикер будет увеличиваться на 2 секунды для каждой секунды/галочки. Третий таймер увеличивается с 3 секундами и так далее (1 секунда добавляется для каждого нажатия кнопки).
Почему это и как «перезагрузить» интервал тикера, чтобы он увеличивался только на 1 секунду каждый раз?
Вот код:
DispatcherTimer timer = new DispatcherTimer();
private void Button_Click_1(object sender, RoutedEventArgs e)
{
timer.Tick += timer_Tick;
timer.Interval = TimeSpan.FromMilliseconds(1000);
timer.Start();
CheckHappiness();
}
int i = 0;
void timer_Tick(object sender, object e)
{
ticker.Text = "Tick #" + i++;
}
private async void CheckHappiness()
{
... code ..
timer.Stop();
}
}
}
Ура!
Вы продолжаете добавлять обработчики событий для события Tick. Поэтому во второй раз, когда вы нажимаете кнопку, метод timer_Tick() будет работать дважды. Наверняка не то, что вы намеревались. Подписывайте событие только один раз в конструкторе. И используйте переменную для значения свойства Interval. –
Также вы вызываете 'timer.Stop()' в 'CheckHappiness', и это может привести к тому, что ваш таймер не будет создавать события, основываясь на том, что' ... code ..' делает –