public void Add(AbstractJob job) { if(_jobs.ContainsKey(job.Id)) throw new ApplicationException("This job id already exists!"); _jobs.Add(job.Id, job); }
public void RegisterAndWait(AbstractJob job) { List<AbstractJob> jobs; lock (groups) { if (!groups.TryGetValue(job.NoParallelGroup.Name, out jobs)) { jobs = new List<AbstractJob>(); groups.Add(job.NoParallelGroup.Name, jobs); } } lock (jobs) { int i = 1; for (; i < jobs.Count; i++) { if (job.NoParallelGroup.Prioriry > jobs[i].NoParallelGroup.Prioriry) { break; } } if (i >= jobs.Count) jobs.Add(job); else jobs.Insert(i, job); while (jobs[0] != job) Monitor.Wait(jobs); } }
public void Unregister(AbstractJob job) { List<AbstractJob> jobs; lock (groups) { groups.TryGetValue(job.NoParallelGroup.Name, out jobs); } lock (jobs) { jobs.Remove(job); Monitor.PulseAll(jobs); } }
public void Update(AbstractJob job) { }
public void Remove(AbstractJob job) { }