コード例 #1
0
        public void Start(string configFile)
        {
            if (Scheduler.IsStarted)
            {
                return;
            }

            //读取配置文件
            CmrConfig.Register(configFile);

            // define the job and tie it to our HelloJob class
            IJobDetail job = JobBuilder.Create <CmrcnCrawlerJob>()
                             .WithIdentity("CmrcnCrawlerJob", "group1")
                             .Build();

            // Trigger the job to run now, and then repeat every 8 hours
            ITrigger trigger = TriggerBuilder.Create()
                               .WithIdentity("trigger1", "group1")
                               .StartNow()
                               .WithSimpleSchedule(x => x.WithIntervalInMinutes(1)
                               //.WithIntervalInHours(8)
                                                   .RepeatForever())
                               //.WithDailyTimeIntervalSchedule(x => x
                               //    .OnEveryDay()
                               //    .WithIntervalInHours(1)
                               //    .StartingDailyAt(TimeOfDay.HourAndMinuteOfDay(8, 7))          //记录一下,尝试一下Utc时间
                               //    .EndingDailyAfterCount(4)
                               //    .WithMisfireHandlingInstructionFireAndProceed()
                               //)
                               .Build();

            // Tell quartz to schedule the job using our trigger
            Scheduler.ScheduleJob(job, trigger);

            Scheduler.Start();
        }
コード例 #2
0
        public void Execute(IJobExecutionContext context)
        {
            _logger.Info("===== CmrcnCrawlerJob 任务开始 =====");

            try
            {
                var config = CmrConfig.GetInstance();

                config.Subjects.Reverse();
                foreach (var subject in config.Subjects)
                {
                    var manager = new ExamManager(subject.LoginInfo);

                    if (false == subject.Enabled)
                    {
                        continue;
                    }

                    int totalExam = 0;
                    foreach (var module in subject.SubjectModules)
                    {
                        totalExam += manager.GetExam(module);
                        Thread.Sleep(1000);
                    }

                    _logger.Info(string.Format("正常完成。SubjcetId:[{0}]-Total:[{1}]", subject.Id, totalExam));
                }
            }
            catch (Exception ex)
            {
                _logger.Error("异常停止", ex);
            }

            _logger.Info(string.Format("===== 目前题库共有 {0} 道题目 =====", _examItemService.Count()));
            _logger.Info("===== CmrcnCrawlerJob 任务结束 =====");
        }