public static bool ScheduleJob(this IScheduler scheduler, JobInfo jobInfo) { Ensure.Requires <ArgumentNullException>(scheduler != null, "sheduler should not be null."); Ensure.Requires <ArgumentNullException>(jobInfo != null, "jobInfo should not be null."); try { var jobGroup = string.IsNullOrWhiteSpace(jobInfo.JobGroup) ? null : jobInfo.JobGroup; var jobKey = new JobKey(jobInfo.JobName, jobGroup); if (!scheduler.CheckExists(jobKey)) { var appDomain = default(AppDomain); var dllPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Jobs", jobInfo.AssemblyName, $"{jobInfo.AssemblyName}.dll"); var job = AppDomainLoader <BaseJob> .Load(dllPath, jobInfo.ClassName, out appDomain); return(JobPoolManager.Instance.Add(jobInfo.ID, new JobRuntimeInfo { AppDomain = appDomain, Job = job, JobModel = jobInfo })); } else { if (jobInfo.Status == 1) { scheduler.ResumeJob(jobKey); } } return(true); } catch (Exception ex) { Logger.Instance.Error(ex.Message); return(false); } }