Создал бесконечный секундомер который отсчитывает от 5 до 0, а когда значение секундомера доходит до нуля, начинает считать заново:
DispatcherTimer dispatcherTimer;
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
dispatcherTimer.Start();
DateTime stopwatch = new DateTime(0001, 1, 1, 0, 0, 0);
DateTime date1 = new DateTime(0001, 1, 1, 0, 0, 5);
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
if (date1.CompareTo(stopwatch) != 0)
{
date1 = date1.AddTicks(-10000000);
Secundomer = date1.ToString("mm:ss");
}
else
{
date1 = date1.AddTicks(60000000);
}
}
Проблема в том, что после отсчета до нуля секундомер "думает" пару секунд и только после этого начинает отсчет заново. Как убрать эту задержку?
Он не "думает пару секунд", он продолжает работать как раньше, просто вы одну итерацию не обновляете значение на экране, поэтому вам так кажется. Вынесите вывод времени за пределы if:
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
if (date1 != stopwatch)
{
date1 = date1.AddSeconds(-1);
}
else
{
date1 = date1.AddSeconds(5);
}
Secundomer = date1.ToString("mm:ss");
}
Продвижение своими сайтами как стратегия роста и независимости