|
using System;
using System.Collections.Generic;
using System.Timers;
using System.Threading;
namespace RaptorDB
{
internal class CronDaemon
{
private readonly System.Timers.Timer timer = new System.Timers.Timer(30000);
private readonly List<CronJob> cron_jobs = new List<CronJob>();
private DateTime _last= DateTime.Now;
public CronDaemon()
{
timer.AutoReset = true;
timer.Elapsed += timer_elapsed;
timer.Start();
}
public void AddJob(string schedule, ThreadStart action)
{
var cj = new CronJob(schedule, action);
cron_jobs.Add(cj);
}
//public void RemoveJob(string schedule)//, ThreadStart action)
//{
// var f = cron_jobs.Find((x) => { return x._cron_schedule._expression == schedule; });
// if(f!=null)
// cron_jobs.Remove(f);
//}
//public void Start()
//{
// timer.Start();
//}
public void Stop()
{
timer.Stop();
foreach (CronJob job in cron_jobs)
job.abort();
}
private void timer_elapsed(object sender, ElapsedEventArgs e)
{
if (DateTime.Now.Minute != _last.Minute)
{
_last = DateTime.Now;
foreach (CronJob job in cron_jobs)
job.execute(DateTime.Now);
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Mehdi first started programming when he was 8 on BBC+128k machine in 6512 processor language, after various hardware and software changes he eventually came across .net and c# which he has been using since v1.0.
He is formally educated as a system analyst Industrial engineer, but his programming passion continues.
* Mehdi is the 5th person to get 6 out of 7 Platinum's on Code-Project (13th Jan'12)
* Mehdi is the 3rd person to get 7 out of 7 Platinum's on Code-Project (26th Aug'16)