用FluentScheduler做定时任务

FluentScheduler是一个无依赖的任务调度框架,适合各种.NET环境。本文将指导你如何通过NuGet获取它,创建定时任务类,实现IJob接口,并设定执行时间,最后在Application_Start中初始化任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值