單例模式使用 Quartz.Net執行定時任務
阿新 • • 發佈:2019-02-16
public sealed class QuartzHelper
{
private static QuartzHelper instance = null;
private QuartzHelper()
{
}
public static QuartzHelper GetInstance()
{
object o = "";
if (instance == null)
{
lock (o)
{
if (instance == null)
{
instance = new QuartzHelper();
}
}
}
return instance;
}
public void StartQuartz()
{
IScheduler sched; //執行者
ISchedulerFactory sf = new StdSchedulerFactory();
sched = sf.GetScheduler();
JobDetail job = new JobDetail("job1", "group1", typeof(UpdatekeyWordsRankJob));//UpdatekeyWordsRankJob為實現了IJob介面的類 工作
DateTime ts = TriggerUtils.GetNextGivenSecondDate(null, 5);//5秒後開始第一次執行
// TimeSpan interval = TimeSpan.FromHours(1);//每隔1小時執行一次
TimeSpan interval = TimeSpan.FromDays(1);//定時,一天執行一次
Trigger trigger = new SimpleTrigger("trigger1", "group1", "job1", "group1", ts, null, //觸發器
SimpleTrigger.RepeatIndefinitely, interval);//每若干小時執行一次,小時間隔由appsettings中的IndexIntervalHour引數指定
sched.AddJob(job, true);
sched.ScheduleJob(trigger);
sched.Start();
}
{
private static QuartzHelper instance = null;
private QuartzHelper()
{
}
public static QuartzHelper GetInstance()
{
object o = "";
if (instance == null)
{
lock (o)
{
if (instance == null)
{
instance = new QuartzHelper();
}
}
}
return instance;
}
public void StartQuartz()
{
IScheduler sched; //執行者
ISchedulerFactory sf = new StdSchedulerFactory();
sched = sf.GetScheduler();
JobDetail job = new JobDetail("job1", "group1", typeof(UpdatekeyWordsRankJob));//UpdatekeyWordsRankJob為實現了IJob介面的類 工作
DateTime ts = TriggerUtils.GetNextGivenSecondDate(null, 5);//5秒後開始第一次執行
// TimeSpan interval = TimeSpan.FromHours(1);//每隔1小時執行一次
TimeSpan interval = TimeSpan.FromDays(1);//定時,一天執行一次
Trigger trigger = new SimpleTrigger("trigger1", "group1", "job1", "group1", ts, null, //觸發器
SimpleTrigger.RepeatIndefinitely, interval);//每若干小時執行一次,小時間隔由appsettings中的IndexIntervalHour引數指定
sched.AddJob(job, true);
sched.ScheduleJob(trigger);
sched.Start();
}
}
UpdatekeyWordsRankJob 類
public class UpdatekeyWordsRankJob:IJob
{
public void Execute(JobExecutionContext context)
{
BLL.keyWordsRankManager bll = new BLL.keyWordsRankManager();
bll.DeleteAll();
bll.Add();
}
}
在Global.asax 中配置,應用程式啟動時,執行定時任務
protected void Application_Start(object sender, EventArgs e)
{
QuartzHelper.GetInstance().StartQuartz(); //啟動定時任務
}