由于网上文档翻译较少 ,给的资料并不多。所以自己只能测试着来,并发下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之后,定时任务就立即执行。