Example #1
0
        /// <summary>
        /// 处理Job
        /// </summary>
        /// <param name="operate"></param>
        /// <param name="assemblyName"></param>
        /// <param name="model"></param>
        public void HandleJobAsync(string operate, string assemblyName, QuartzEditModel model)
        {
            try
            {
                InitSchedulerAsync();
                if (!scheduler.IsStarted)
                {
                    throw new Exception("请先启动定时任务程序");
                }
                JobKey     jobKey     = new JobKey(model.JobName, model.JobGroup);
                TriggerKey triggerKey = new TriggerKey(model.JobName, model.JobGroup);
                Assembly   assembly   = Assembly.LoadFrom(Constants.ServerMapPath() + assemblyName);
                if (assembly == null)
                {
                    throw new Exception(string.Format("加载Assembly[{0}]失败!", assemblyName));
                }
                Type type = assembly.GetType(model.JobClass);
                switch (operate)
                {
                case Constants.JobPause:
                    scheduler.PauseJob(jobKey);
                    break;

                case Constants.JobResume:
                    scheduler.ResumeJob(jobKey);
                    break;

                case Constants.JobStop:
                    scheduler.UnscheduleJob(triggerKey);
                    break;

                case Constants.JobStart:
                    CreateJob(assemblyName, model);
                    break;

                case Constants.JobExcute:
                    IJobDetail jobDetail1 = JobBuilder.Create(type).WithIdentity(model.JobName + "$$" + Guid.NewGuid().ToString(), model.JobGroup + "$$" + Guid.NewGuid().ToString()).Build();
                    ITrigger   trigger1   = TriggerBuilder.Create()
                                            .StartNow().Build();
                    scheduler.ScheduleJob(jobDetail1, trigger1);
                    break;

                default:
                    throw new Exception("operate is not invalid!");
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #2
0
 /// <summary>
 /// 创建或更新Job
 /// </summary>
 /// <param name="assemblyName"></param>
 /// <param name="model"></param>
 public void CreateJob(string assemblyName, QuartzEditModel model)
 {
     try
     {
         InitSchedulerAsync();
         if (!scheduler.IsStarted)
         {
             throw new Exception("请先启动定时任务程序");
         }
         if (!CronExpression.IsValidExpression(model.Cron))
         {
             throw new Exception(string.Format("Cron表达式[{0}]格式不正确!", model.Cron));
         }
         Assembly assembly = Assembly.LoadFrom(Constants.ServerMapPath() + assemblyName);
         if (assembly == null)
         {
             throw new Exception(string.Format("加载Assembly[{0}]失败!", assemblyName));
         }
         Type type = assembly.GetType(model.JobClass);
         if (type == null)
         {
             throw new Exception(string.Format("加载Class[{0}]失败!", model.JobClass));
         }
         if (!type.IsSubclassOf(typeof(BaseJob)))
         {
             throw new Exception(string.Format("Class[{0}]未继承BaseJob!", model.JobClass));
         }
         JobKey     jobKey    = new JobKey(model.JobName, model.JobGroup);
         IJobDetail jobDetail = JobBuilder.Create(type)
                                .WithIdentity(jobKey)
                                .WithDescription(model.JobDesc)
                                .Build();
         scheduler.AddJob(jobDetail, false);
         TriggerKey   triggerKey = new TriggerKey(model.JobName, model.JobGroup);
         ICronTrigger trigger    = (ICronTrigger)TriggerBuilder.Create()
                                   .WithIdentity(triggerKey)
                                   .WithCronSchedule(model.Cron)
                                   .WithDescription(model.CronDesc)
                                   .Build();
         scheduler.ScheduleJob(jobDetail, trigger);
     }
     catch (Exception ex)
     {
         throw ex;
     }
 }