呼叫功能每天在指定时间运行

时间:2013-07-11 04:17:58

标签: c# timer

看看我的代码:

Timer myTimer = new Timer { Interval = 1000 };
public void button_Click(object sender, EventArgs e)
{
    myTimer.Tick += new EventHandler(OnTick);
    myTimer.Start();
}
public void OnTick(object sender, EventArgs ea)
{
    myTimer.Stop();
    Execute();
}

我希望函数Execute();每天在指定的时间运行,例如:1h:5min, 1h:25min, 2h10min...。我使用Timer,但我只能使函数每Interval次运行一次。如何指定定时器的绝对时间?

3 个答案:

答案 0 :(得分:1)

您可以计算当前时间与应用程序启动时Timer应运行的时间之间经过的毫秒数。设置计时器Interval的毫秒数。

示例:

TimeSpan ts = <datetime when timer should fire> - DateTime.Now;

myTimer.Tick += new EventHandler(OnTick);
myTimer.Interval = ts.TotalMilliseconds;
myTimer.Start();

当计时器触发时,使用上面的行再次设置间隔,以确保它在指定时间的第二天再次触发。

这当然假设您的应用程序确实在您想要定时触发时运行。

答案 1 :(得分:0)

您可以使用Quartz.net调度程序创建日程表: http://quartznet.sourceforge.net/

答案 2 :(得分:0)

您无法为任何内置计时器类指定绝对时间。您必须手动计算间隔。

可能适合您的其他解决方案:

  • 使用Quartz
  • 之类的日程安排程序
  • 使用Windows预定任务