1

看看我的代码:

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。如何为计时器指定绝对时间?

4

3 回答 3

1

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

例子:

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

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

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

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

于 2013-07-11T06:58:52.150 回答
0

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

于 2013-07-11T05:00:09.640 回答
0

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

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

于 2013-07-11T05:00:56.813 回答