コード例 #1
0
        public static bool Start(ArchiveSavedJob archiveJob)
        {
            var logger = LogManager.GetCurrentClassLogger();

            try
            {
                IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
                scheduler.Start();

                IJobDetail job = JobBuilder.Create <ArchiveJob>().WithDescription("Архивация").Build();

                CronExpression.ValidateExpression(archiveJob.CronExpression);

                JobDataMap jobMap = new JobDataMap();
                jobMap.Put("Filter", archiveJob.Filter);

                ITrigger trigger = TriggerBuilder.Create()                          // создаем триггер
                                   .WithIdentity(archiveJob.Name, archiveJob.Group) // идентифицируем триггер с именем и группой
                                   .StartNow()
                                   .WithCronSchedule(archiveJob.CronExpression)     // каждую минуту
                                   .UsingJobData("StartPath", archiveJob.StartPath)
                                   .UsingJobData("EndPath", archiveJob.EndPath)
                                   .UsingJobData("EndFileName", archiveJob.EndFileName)
                                   .UsingJobData(jobMap)
                                   .UsingJobData("DateTimeFormat", archiveJob.DateTimeFormat)
                                   .UsingJobData("DeleteFiles", archiveJob.DeleteFiles)
                                   .UsingJobData("UseName", archiveJob.UseName)
                                   .UsingJobData("UseGroup", archiveJob.UseGroup)
                                   .UsingJobData("UseDateTimeFormat", archiveJob.UseDateTimeFormat)
                                   .UsingJobData("UseGuid", archiveJob.UseGuid)
                                   .ForJob(job)
                                   .Build();                // создаем триггер


                if (job != null && trigger != null)
                {
                    scheduler.ScheduleJob(job, trigger);        // начинаем выполнение работы

                    logger.Info("Инициализация планировщика - " + archiveJob.Name + ": " + archiveJob.Group);

                    return(true);

                    //
                }
                else
                {
                    logger.Error("Ошибка инициализации планировщика - " + archiveJob.Name + ": " + archiveJob.Group);
                }
            }
            catch (Exception e)
            {
                logger.Error("Ошибка - " + e.Message);
            }

            //return ScheludeStatus.STOPPED;

            return(false);
        }
コード例 #2
0
        public static bool GetStatusAsync(ArchiveSavedJob job)
        {
            IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();
            TriggerKey key       = new TriggerKey(job.Name, job.Group);

            if (scheduler.IsStarted == true)
            {
                return(true);
            }

            return(false);
        }
コード例 #3
0
        public static bool Stop(ArchiveSavedJob job)
        {
            var logger = LogManager.GetCurrentClassLogger();

            try
            {
                IScheduler scheduler = StdSchedulerFactory.GetDefaultScheduler();

                TriggerKey key = new TriggerKey(job.Name, job.Group);

                scheduler.UnscheduleJob(key);
                scheduler.Shutdown();

                logger.Info("Задание - " + key.Name + ": " + key.Group + " остановлено !");

                return(true);
            }
            catch (Exception e)
            {
                logger.Error("Ошибка -" + e.Message);
            }

            return(false);
        }