美文网首页
Net WebForm下简单插件定时作业FluentSchedu

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

作者: 小渣渣炸 | 来源:发表于2018-03-09 15:57 被阅读0次

由于网上文档翻译较少 ,给的资料并不多。所以自己只能测试着来,并发下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().ToRunNow().AndEvery(2).Seconds();

            //// Schedule an IJob to run once, delayed by a specific time interval

            //// 延迟一个指定时间间隔执行一次计划任务。(当然,这个间隔依然可以是秒、分、时、天、月、年等。)

            //Schedule().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().ToRunNow().AndEvery(1).Months().OnTheFirst(DayOfWeek.Monday).At(3, 0);

            //// Schedule multiple jobs to be run in a single schedule

            //// 在同一个计划中执行两个(多个)任务

            //Schedule().AndThen().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();

        }

        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之后,定时任务就立即执行。刚才提到的WriteDateTimeString()代码如下:

相关文章

网友评论

      本文标题:Net WebForm下简单插件定时作业FluentSchedu

      本文链接:https://www.haomeiwen.com/subject/aftmfftx.html