C# .NETMF TimerCallback具有不同的时间跨度?
我试图让计时器每天触发两次,而不是一个稳定的时间跨度。 我想在07:00和16:00触发回调,然后在第二天07:00重复C# .NETMF TimerCallback具有不同的时间跨度?,c#,timer,timespan,C#,Timer,Timespan,我试图让计时器每天触发两次,而不是一个稳定的时间跨度。 我想在07:00和16:00触发回调,然后在第二天07:00重复 出于某种原因,我没有意识到这一点,这似乎并不难,但我在想,我必须每天建立一个新的计时器,并在一天结束时关闭它?为什么不让计时器每小时滴答一次,然后只在7:00和16:00响应事件 var timer = new Timer(TimeSpan.FromHours(1).TotalMilliseconds); timer.Elapsed += TimerHandler; voi
出于某种原因,我没有意识到这一点,这似乎并不难,但我在想,我必须每天建立一个新的计时器,并在一天结束时关闭它?为什么不让计时器每小时滴答一次,然后只在7:00和16:00响应事件
var timer = new Timer(TimeSpan.FromHours(1).TotalMilliseconds);
timer.Elapsed += TimerHandler;
void TimerHandler(object sender, EventArgs e) {
var hour = DateTime.Now.Hour;
if (hour != 7 && hour != 16) {
return;
}
...
}
如果必须执行所需的功能,最好每小时触发一次,并检查回调。当以后您决定更改时间,甚至更改每天触发器的数量时,可以在一个位置执行,而无需重新创建计时器
例如,将一个列表传递给timer(extended)类,该类记录真正做某事的时间,并每小时检查一次该列表。您真的需要使用长时间运行的计时器来实现这一点吗?如果您正在等待执行特定任务,那么最好编写一个控制台应用程序来执行您需要的任何操作。然后,您可以设置一个计划任务,以便在需要时运行应用程序;请参阅。基于此线程中的信息,我决定为NETMF编写一个“调度程序”库。它在实现上类似于计时器模式,但基于TimeDate来指定事件
您可以通过是的。基本上,海报不需要计时器,而是需要一个可以在mroe业务级别的时间表上工作的调度器-这不在.NET框架中。因此,一个常规的计时器+逻辑可以工作,或者像quartz.net这样的调度框架。是的,调度器是描述事情的更好方法。这是在.NETMF(Netduino)中,所以我将考虑使用我自己的(用回调对象在时间戳上键入的哈希表似乎合理)足够公平-在这种情况下,我要么接受JaredPar的建议,要么计算距离下一次需要运行的时间有多长,并将超时设置为该持续时间。我应该在主线程中提到,不是在评论中,而是.NETMF(Netduino)