예제 #1
0
        /// <summary>
        /// 执行任务
        /// </summary>
        /// <param name="scheduler"></param>
        /// <remarks>
        /// </remarks>
        public static void ExecuteJobs(IScheduler scheduler)
        {
            SystemTaskSectionConfig sectionConfig = Config.GetSection <SystemTaskSectionConfig>("systemTaskSection");

            foreach (SystemTaskOfDailyExcutorEntity item in sectionConfig.SystemTaskOfDailyExcutorList)
            {
                if (item.IsUse == false)
                {
                    continue;
                }

                JobDetail jobDetail = new JobDetail(item.Name + "Job", null, item.Type);

                Trigger triger = TriggerUtils.MakeDailyTrigger(item.ExcuteHour, item.ExcuteMinute);
                triger.Name = item.Name + "Triger";

                //0.由于采用了2种方式执行job,为了防止对同一个job可能多次的执行,就需要在job内部自己控制重复的逻辑。

                //1.如果系统一直未退出应用程序域,那么就可以使用Schedule来执行
                if (scheduler != null)
                {
                    scheduler.ScheduleJob(jobDetail, triger);
                }

                //2.如果系统在退出应用程序域的时间段内已经过了task执行的时间,那么手动执行task
                CommonHandle <SystemTaskOfDailyExcutorEntity> commonHandle = new CommonHandle <SystemTaskOfDailyExcutorEntity>(ExcuteJobManaul);
                commonHandle.BeginInvoke(item, null, null);
            }
        }
예제 #2
0
        /// <summary>
        /// 手工调试Job使用
        /// </summary>
        public static void DebugJobs()
        {
            SystemTaskSectionConfig sectionConfig = Config.GetSection <SystemTaskSectionConfig>("systemTaskSection");

            foreach (SystemTaskOfDailyExcutorEntity item in sectionConfig.SystemTaskOfDailyExcutorList)
            {
                if (item.IsUse == false)
                {
                    continue;
                }

                ExcuteJobManaul(item);
            }
        }