Net WebForm下简单插件定时作业FluentScheduler
由于网上文档翻译较少 ,给的资料并不多。所以自己只能测试着来,并发下demo加注释。
思路是在Global.asax里启动作业,然后读取数据库信息配置信息生成动态执行作业任务。
//JobManager.Initialize(new JobManage());//Initialize只能一次,避免作业混乱多次执行启动加载作业,然后定时读取数据库配置任务
思路是在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之后,定时任务就立即执行。