1. 程式人生 > >單例模式使用 Quartz.Net執行定時任務

單例模式使用 Quartz.Net執行定時任務

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();
        }

    }

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();  //啟動定時任務
        }