public partial class TestQuarzWebForm : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//启动计划任务 SimpleTrigger
//TestQuartzStart();
}
private void TestQuartzStart()
{
IScheduler sched;//调度主程序接口
ISchedulerFactory sf = new StdSchedulerFactory();//初始化的标准调度器工厂类的一个新实例
sched = sf.GetScheduler(); //获取一个客户端可用的句柄一个Quartz调度
//创建一个Quartz.JobDetail ,与给定的名称和组,和所有其他属性的默认设置。如果为null,将使用Scheduler.DefaultGroup
JobDetail job = new JobDetail("job1","group1", typeof(Test));//Test为实现了IJob接口的类
//这里可以获取当前时间进行判断 然后根据当前时间 然后设置多长时间执行一次
//DateTime dt = new DateTime();
// dt.AddHours(1);
// DateTime ts = TriggerUtils.GetEvenHourDate(dt);//hour时 1小时后开始第一次运行
// DateTime ts2 = TriggerUtils.GetEvenMinuteDate(dt);//Minute分
DateTime ts = TriggerUtils.GetNextGivenSecondDate(null, 5);//5秒后开始第一次运行
TimeSpan interval = TimeSpan.FromSeconds(5);//每隔5秒钟执行一次
#region 解析
//public SimpleTrigger(string name, string group, string jobName, string jobGroup, DateTime startTimeUtc, DateTime? endTimeUtc, int repeatCount, TimeSpan repeatInterval);
//1.触发器名,2.组名,3.任务名,4.任务组,5.多少时间之后开始执行第一次,6.结束时间,7.重复发射,8.执行的时间间隔
#endregion
Trigger trigger = new SimpleTrigger("trigger1", "group1", "job1", "group1", ts,null,
SimpleTrigger.RepeatIndefinitely, interval);
//添加任务
sched.AddJob(job,true);
sched.ScheduleJob(trigger); //确定Quartz.IJob中附表的给定触发器
sched.Start(); //开始执行计划
}
}
定时执行的类
public class Test : IJob
{
private static ILog logger = LogManager.GetLogger(typeof(Test));
public void Execute(JobExecutionContext context)
{
try
{
Testsd();
string jobName = context.JobDetail.FullName;
logger.Debug("任务执行了"+"工作任务名"+jobName+"当前时间"+DateTime.Now.ToString());
}
catch (Exception ex)
{
JobExecutionException e2 = new JobExecutionException(ex);
e2.RefireImmediately = true;
logger.Debug("未处理异常"+ex+"任务异常:"+e2);
}
}
public static void Testsd()
{
logger.Debug("执行le这个方法");
}
}