Реверс таймера DispatcherTimer

128
08 декабря 2020, 08:10

Подскажите, как заставить таймер DispatcherTimer идти в обратную сторону?

    public TestTimer()
    {
        Timer = new DispatcherTimer();
        Timer.Interval = new TimeSpan(0, 0, 1);
        Timer.Tick += TimerTick;
        StartTimer();            
    }
    private DispatcherTimer Timer;
    private int _seconds;
    public int Seconds
    {
        get { return _seconds; }
        set
        {
            if(value > -1 && value < 61)
                _seconds = value;
        }
    }
    private int _minutes;
    public int Minutes
    {
        get { return _minutes; }
        set
        {
            if (value > -1 && value < 61)
                _minutes = value;
        }
    }
    private int _hours;
    public int Hours
    {
        get { return _hours; }
        set
        {
            if (value > -1 && value < 25)
                _hours = value;
        }
    }
    public void StartTimer()
    {
        Timer.Start();
    }
    public void StopTimer()
    {
        Timer.Stop();
    }
    private void TimerTick(object sender, EventArgs e)
    {
        if (Seconds > 59)
        {
            Seconds = 0;
            Minutes++;
            if (Minutes > 59)
            {
                Minutes = 0;
                Hours++;
                if (Hours > 23)
                    Hours = 0;
            }
        }
        Seconds++;
        TimeFormat = string.Format("{0:00}:{1:00}:{2:00}",
            Hours, Minutes, Seconds);
    }
Answer 1

Возможно вы не все показали, что вам надо, но для того кода, что я вижу, таймер не нужен.

public class TestTimer
{
    public TestTimer()
    {
        StartTimer();
    }
    public int Seconds
    {
        get => (DateTime.UtcNow - _startTime).Seconds;
    }
    public int Minutes
    {
        get => (DateTime.UtcNow - _startTime).Minutes;
    }
    public int Hours
    {
        get => (DateTime.UtcNow - _startTime).Hours;
    }
    private DateTime _startTime = DateTime.UtcNow;
    public void StartTimer()
    {
        _startTime = DateTime.UtcNow;
    }
    public string TimeFormat => string.Format("{0:00}:{1:00}:{2:00}", Hours, Minutes, Seconds);
}

Как использовать

var timer = new TestTimer();
timer.StartTimer();
Thread.Sleep(2000);
Console.WriteLine(timer.TimeFormat);

Вывод

00:00:02
READ ALSO
Делегат многоадрессный

Делегат многоадрессный

Столкнулся с проблемой не могу понять,как решить, вот, что есть:

115
Многопоточность синхронизация

Многопоточность синхронизация

Как закончить работу программы корректно:

101
Логирование и сохранение в php monolog

Логирование и сохранение в php monolog

Всем привет, мне нужно сделать лог вставки в базу данных и сохранить этот лог в файлНаведите пожалуйста пример или документацию ибо я не нашел

113