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); } }