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);
        }
Exemplo n.º 2
0
        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;
        }
Exemplo n.º 4
0
        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);
        });