예제 #1
0
파일: JobQueue.cs 프로젝트: vilvm88/dos
        public bool TryGetJob(out Job job)
        {
            lock (_locker)
            {
                job = null;

                var jobInWork = _jobs.FirstOrDefault(x => !x.InWork && !x.IsArchived);

                if (jobInWork is null)
                {
                    JobsInQueue.Reset();
                    return(false);
                }

                jobInWork.Work();

                job = jobInWork.Job;

                if (_jobs.Count(x => !x.InWork && !x.IsArchived) == 0)
                {
                    JobsInQueue.Reset();
                }

                return(true);
            }
        }