我想在系统时钟中每个小时过去时引发一个事件。例如,我在早上 7:45 运行我的程序,那么应该在早上 8:00 而不是早上 8:45 提出事件。在上午 8:00 发起活动后,则应在上午 9:00、上午 10:00、上午 11:00 等每小时发起一次...
谁能帮我展示一些代码...我使用 C#.net...在此先感谢...
更新:
现在我得到了我的问题的简单解决方案。因此,我想分享这个解决方案。lboshuizen 的回答已经是正确的了。我的回答与 lbohuizen 的回答逻辑相同,但更详细和准确。
首先它需要使用定时器。计时器基本上基于毫秒工作,有时需要额外计算。因此,我想首先实现毫秒到分钟的格式化功能。
int CalculateMillisecondUntilNextHour()
{
int REMAIN_MINUTE = 60 - DateTime.Now.Minute;
DateTime now = DateTime.Now;
DateTime nexthour = now.AddMinutes((minute)).AddSeconds(now.Second * -1).AddMilliseconds(now.Millisecond * -1);
TimeSpan interval = nexthour - now;
return (int)interval.TotalMilliseconds;
}
void CheckEachHourPassed()
{
System.Windows.Forms.Timer t = new System.Windows.Forms.Timer();
t.Interval = CalculateMillisecondUntilNextHour();
t.Tick += new EventHandler(t_Tick);
t.Enabled = true;
}
void t_Tick(object sender, EventArgs e)
{
MessageBox.Show("Raise Your Event");
t.Interval = CalculateTimerInterval(REMAIN_MINUTE);
}
在这里,主要的工作函数是 CheckEachHourPassed()。在要启动事件调度程序的地方调用此函数。