public HashSet <IScheduledWorker> ScheduleJob(IJob job) { if (_inProcessWorkers.ContainsKey(job)) { return(null); } var workers = new HashSet <IWorker>(); var scheduledWorkers = new HashSet <IScheduledWorker>(); _inProcessWorkers.Add(job, workers); _inProcessWorkerSchedules.Add(job, scheduledWorkers); foreach (var skill in job.RequiredSkillSet) { var worker = GetNextWorker(skill); if (worker == null) { return(null); } var scheduledWorker = new ScheduledWorker(worker, job.ScheduledStartTime, job.ScheduledEndTime, job); scheduledWorkers.Add(scheduledWorker); workers.Add(worker); _inProcessJobs.Add(worker, job); _workerAvailableStates[skill][worker.ID] = false; } return(scheduledWorkers); }
static void Main() { // 全局异常捕获 AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; DoStartLog(); // 启动计划任务 ScheduledWorker.StartAllScheduled(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(MainForm.Default); }
public HashSet<IScheduledWorker> ScheduleJob(IJob job) { if (_inProcessWorkers.ContainsKey(job)) return null; var workers = new HashSet<IWorker>(); var scheduledWorkers = new HashSet<IScheduledWorker>(); _inProcessWorkers.Add(job, workers); _inProcessWorkerSchedules.Add(job, scheduledWorkers); foreach (var skill in job.RequiredSkillSet) { var worker = GetNextWorker(skill); if (worker == null) return null; var scheduledWorker = new ScheduledWorker(worker, job.ScheduledStartTime, job.ScheduledEndTime, job); scheduledWorkers.Add(scheduledWorker); workers.Add(worker); _inProcessJobs.Add(worker, job); _workerAvailableStates[skill][worker.ID] = false; } return scheduledWorkers; }
public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, services) => { var worker1 = new ScheduledWorker( new WorkerTask(Log.Logger), WORKER_CRONTIMER, Log.Logger ); var worker2 = new ScheduledWorker( new Worker2Task(Log.Logger), WORKER_2_CRONTIMER, Log.Logger ); services.AddLogging(builder => { builder.AddSerilog(); }); services.AddHostedService(f => worker1); services.AddHostedService(f => worker2); });