我该如何反转DispatcherTimer?

时间:2019-05-09 09:15:27

标签: c#

我需要反转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);
    }

1 个答案:

答案 0 :(得分:1)

我不确定您要做什么或出于什么目的。

如果要计数,则可以使用TimerTick事件处理程序每​​秒进行一次计数,或者更有效地进行计数,请在开始时使用DateTime.Now,并在完成后减去DateTime.Now在它们之间获得TimeSpan

如果您要进行递减计数,则可以使用相同的方法,但是从开始算起减去经过的滴答数即可得出当前的递减计数值。