公司有个任务,需要可以设置每个时间段查询数据库数据,并把数据保存到本地。 程序要24小时运行,并且根据时间段来执行相关任务 比如:
01-02时,要查询数据
02-03时,要查询数据
03-04时,不查询数据
04-05时,不查询数据
05-06时,要查询数据
... ...
23-24时,要查询数据 ,
如果任务中的话,可以点击停止按钮停止掉,然后点击开始,按钮重新开始。
这种形式的,该怎么去实现呢。是用while循环判断当前时间是否在这个时间段内?
相对自己去实现,我还是比较喜欢推荐Quartz.Net给你,不妨去看看~
如果非要自己实现的,while是其中一种做法,轮询+字典 做计划任务
使用backgroundWorker控件
private void Form1_Load(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
//这里用来计算下次执行前要休眠的时间,然后休眠
var sleep = nextDate - DateTime.Now;
if (sleep.Ticks > 0)
{
Thread.Sleep(sleep);
}
//这里写要执行的工作 比如 查询数据
}
//前一个方法执行完后会触发这个事件,然后在启用前一个方法,形成循环
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}