2

我正在比较时间并基于将时间间隔分配给计时器。

我有 2 个约会时间,

对于即

Datetime dt1 = 04:00:00;
Datetime dt2 = 15:20:28;
Datetime dt3 = 24:00:00;

现在,我想设置时间间隔在 04:00:00 调用计时器。想想,现在时间是 15:20:28,所以要在 04:00:00 调用计时器,我需要做一些操作。

那么,我应该怎么做才能Timer在 04:00:00 打电话???简而言之,我想查看时间,如果不是 04:00 AM,则设置适当的间隔以在 04:00 AM 调用计时器。

并将时间转换为定时器间隔???

4

2 回答 2

0

你不能打电话给定时器。定时器在间隔结束时唤醒。您可以做的是计算从现在到凌晨 4 点的 TimeSpan,并将 Timer 间隔设置为该值。或者更高效的架构方法,就是将定时器间隔设置为每n秒,当定时器唤醒时检查是否为4。

这是第一个选项的示例代码:

TimeSpan ts = new TimeSpan(new DateTime(2013,06,15,04,00,00).Ticks- DateTime.Now.Ticks);
        long ticks = ts.Ticks;
        long divide=    (long)Math.Pow(10, 7);
        long span = ticks / divide;
        timer.Interval = (int)span*1000;
        timer.Tick += timer_Tick;
        timer.Start();
于 2013-06-15T11:08:28.447 回答
0
var dt = ... // next 4:00 AM from now
var timer = new Timer(callback, null, dt - DateTime.Now, TimeSpan.FromHours(24));

检查这是否适合你

于 2013-06-15T11:11:14.857 回答