/// <summary> /// Schedules given job within PriorityQueue /// </summary> /// <param name="jobs">Jobs to schedule</param> public static void ScheduleJobs(params BaseJob[] jobs) { foreach (var job in jobs) { var log = $"Scheduling {job?.GetType()?.Name?.Replace("Job", string.Empty)} job (ID: {job.Id}) with {job.Priority} priority."; Debug.WriteLine(log); LogHelper.WriteLog(log); PriorityQueue.Enqueue(job); } // TODO perform some operation/s here while (!AllJobsHaveFinished()) { if (Executor.CanStartNewJob()) { var job = PriorityQueue.Dequeue(); Executor.ExecuteJob(job); } } }