Example #1
0
        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);
            }
        }