Net WebForm下简单插件定时作业FluentScheduler

由于网上文档翻译较少 ,给的资料并不多。所以自己只能测试着来,并发下demo加注释。
思路是在Global.asax里启动作业,然后读取数据库信息配置信息生成动态执行作业任务。
protected void Application_Start()
        {
            JobManager.Initialize(new JobManage());//Initialize只能一次,避免作业混乱多次执行启动加载作业,然后定时读取数据库配置任务
        }

public class JobManage : Registry
    {
        public JobManage()
        {
            #region
             Schedule an IJob to run at an interval
             立即执行每两秒一次的计划任务。(指定一个时间间隔运行,根据自己需求,可以是秒、分、时、天、月、年等。)
            //Schedule<MyJob>().ToRunNow().AndEvery(2).Seconds();
 
             Schedule an IJob to run once, delayed by a specific time interval
             延迟一个指定时间间隔执行一次计划任务。(当然,这个间隔依然可以是秒、分、时、天、月、年等。)
            //Schedule<MyJob>().ToRunOnceIn(5).Seconds();
 
             Schedule a simple job to run at a specific time
             在一个指定时间执行计划任务(最常用。这里是在每天的下午 1:10 分执行)
            //Schedule(() => Trace.WriteLine("It's 1:10 PM now.")).ToRunEvery(1).Days().At(13, 10);
 
            //Schedule(() => {
 
            //    // 做你想做的事儿。
            //    Trace.WriteLine("It's 1:10 PM now.");
 
            //}).ToRunEvery(1).Days().At(13, 10);
 
             Schedule a more complex action to run immediately and on an monthly interval
             立即执行一个在每月的星期一 3:00 的计划任务(可以看出来这个一个比较复杂点的时间,它意思是它也能做到!)
            //Schedule<MyComplexJob>().ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);
 
             Schedule multiple jobs to be run in a single schedule
             在同一个计划中执行两个(多个)任务
            //Schedule<MyJob>().AndThen<MyOtherJob>().ToRunNow().AndEvery(5).Minutes();
            //Schedule(() => Trace.WriteLine("It's 1:10 PM now.")).ToRunEvery(1).Days().At(9, 50);
            //Schedule(() => DaTaoKeHelp.QCGQ()).ToRunEvery(1).Seconds();
            #endregion
            Schedule(() => Execute()).ToRunNow().AndEvery(30).Minutes();//立即执行Execute方法每隔30分钟执行一次
        }
        public void Execute()
        {
            //遍历数据库,读取任务;此处代码还没写
             // 动态添加作业 
             //JobManager.AddJob(() => showtime(), schedule =>
             //{
                //schedule.WithName("WriteTimeString").ToRunEvery(20).Seconds();
             //}); //动态添加作业 
        }
        
        public void showtime() {
            int num = 0;
            Console.WriteLine(DateTime.Now);
            num++;
        }
         public void demo3()
        {
            if(JobManager.GetSchedule("WriteTimeString")!=null){//确认指定ID作业是否存在
                JobManager.GetSchedule("WriteTimeString").Enable();//启动指定ID作业
                Response.Write(JobManager.GetSchedule("WriteTimeString").Name+ JobManager.GetSchedule("WriteTimeString").Disabled);
                JobManager.GetSchedule("WriteTimeString").Disable();//停止指定ID作业
            }
            JobManager.RemoveJob("WriteTimeString");
            //JobManager.Initialize(new job()); //加载作业
            //JobManager.Stop();停止所有作业
            //JobManager.RemoveJob("WriteTimeString");//移除指定ID作业
        }
    }

  


    //JobManager.Initialize(new JobManage());//Initialize只能一次,避免作业混乱多次执行启动加载作业,然后定时读取数据库配置任务
    //其中WithName(“WriteTimeString”)中的WriteTimeString是给这个定时任务唯一ID,
    //这个任务ID是用于显示控制任务,后面终止任务会用到。
    //AndEvery(2).Seconds()意思是立即执行,而且每间隔2秒执行一遍。
    //最后还需要JobManager.Initialize()函数初始化任务列表,Registry类是用于注册一个或多个任务,
    //JobManager.Initialize之后,定时任务就立即执行。

转载于:https://www.cnblogs.com/xiaozhazhazha/p/8534517.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值