具有不同TimeSpans的.NETMF TimerCallback?

时间:2012-02-07 16:18:45

标签: c# timer timespan

我试图让Timer每天触发两次,而不是稳定的时间跨度。 我想在07:00和16:00再次触发回调,然后在07:00重复第二天。

由于某种原因,它让我不知所措,这似乎并不难,但我想我必须每天建立一个新的计时器并杀死它并结束一天?

4 个答案:

答案 0 :(得分:4)

为什么不是每小时都有一个计时器,然后只在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;
  }
  ...
}

答案 1 :(得分:1)

你真的需要使用长时间运行的计时器来实现这一目标吗?如果您正在等待执行特定任务,那么编写一个可以满足您需求的控制台应用程序可能是个更好的主意。然后,您可以设置计划任务,以便在需要时运行应用程序;见http://windows.microsoft.com/en-US/windows7/schedule-a-task

答案 2 :(得分:0)

如果必须执行所需的功能,可能每小时触发一次并检查回调是个好主意。当您稍后决定更改时间甚至更改每天的触发量时,可以在一个位置完成,而无需重新创建计时器。

E.g。将一个列表传递给计时器(扩展)类,该类保留了实际执行操作的时间,并且每小时检查一次该列表。

答案 3 :(得分:0)

根据此主题中的信息,我决定为NETMF创建一个“调度程序”库。它在实现上类似于计时器模式,但是基于TimeDate来指定事件。

您可以通过https://github.com/pelogical/mfschedule

获取图书馆