FluentScheduler是一个简单好用的任务调度框架,FluentScheduler提供了一个类库还有任务调度的基本功能,同时又没有依赖项,适用于各种.net框架。用FluentScheduler可以实现一些简单的定时任务。
1)从NuGet程序包中搜索下载FluentScheduler。
2)创建一个用来做定时任务的类,这个类要引用FluentScheduler的命名空间(using FluentScheduler)。同时要继承Registry类,这个类是用来设置时间的。然后再创建一个类,这个类写我们要做的事情,这个类继承IJob类并实现接口Execute方法。
3)给Execute方法写需要执行的事件,方法体为到指定时间执行的代码。
void IJob.Execute()
{
var list = (from tbUser in myModels.User where tbUser.UserID == 1 select tbUser).FirstOrDefault();
list.State = false;
myModels.Entry(list).State = EntityState.Modified;
myModels.SaveChanges();
}
4)用Registry的实例方法Schedule<T>来设置定时任务执行的时间。
public MyRegistry()
{
Schedule<TestJob>().ToRunEvery(1).Days().At(03, 00);
//立即执行计划任务。再根据指定一个时间间隔运行,可以是秒、分、时、天、月、年等。)
//Schedule<TestJob>().ToRunNow().AndEvery(10).Seconds();
//延迟一个指定时间间隔执行一次计划任务。这个间隔可以是秒、分、时、天、月、年等。
//Schedule<TestJob>().ToRunOnceIn(10).Seconds();
//每天执行一次(这里是在每天的下午15:42分执行),可以不用类,直接虚拟方法
//Schedule(() => Console.WriteLine("It's 15:42 now.")).ToRunEvery(1).Days().At(15, 42);
//每n年的第几天
//Schedule<TestJob>().ToRunEvery(1).Years().On(5);
//每n年的最后一天
//Schedule<TestJob>().ToRunEvery(1).Years().OnTheLastDay();
//每n月的第几天
//Schedule<ClearJob>().ToRunEvery(1).Months().On(1);
//每n月的第一个星期的星期5 的15:0执行
//Schedule<TestJob>().ToRunEvery(1).Months().OnTheFirst(DayOfWeek.Friday).At(15, 0);
}
5)设置程序启动时初始化定时任务。在Global.asax 文件的 Application_Start 方法内使用 JobManager.Initialize(new MyRegistry ())进行初始化。
protected void Application_Start()
{
JobManager.Initialize(new MyRegistry());
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
}