如何在特定时间启动计时器?

the*_*drr 4 c# wpf timer

这是场景:

有一个Textbox该用户输入在该时间中DispatcherTimer必须启动。计时器设置为始终运行4个小时,并且Timer.Tick事件播放声音。假设计时器从04:00:00(HH:mm:ss)开始,应运行到8:00:00,然后停止。然后,当用户将时间更改为09:00:00时。计时器应运行到13:00:00,依此类推。

如何做到这一点?我无法运行1分钟的计时器来检查正确的时间,因为这会给系统带来沉重负担。

感谢所有帮助。先感谢您。

mar*_*k_h 6

下面的方法根据提供的日期时间(即输入到文本框中的时间),以一定的间隔启动一个初始计时器。到达时间后,它会启动一个辅助计时器,从该点开始,它将每四个小时触发一次。

我使用System.Timers计时器而不是Sytem.Threading计时器(因为具有讽刺意味的是,system.threading计时器不是线程安全的!)

    public void StartTimer(DateTime time)
    {
        const int fourHoursInMilliseconds = 4 * 3600 * 1000;

        var fourHourTimer = new Timer() {Interval = fourHoursInMilliseconds};
        fourHourTimer.Elapsed += (sender, e) =>
        {
            //code to handle the elapsed event here
        };

        var span = time - DateTime.Now;
        var timer = new Timer {Interval = span.TotalMilliseconds, AutoReset = false};
        timer.Elapsed += (sender, e) => { fourHourTimer.Start();};
        timer.Start();
    }
Run Code Online (Sandbox Code Playgroud)

希望这是您所需要的。