private void StartJob(MeltJob pJob) { pJob.StatusChanged += (sender, e) => { switch (e) { case JobStatus.Failed: case JobStatus.Success: if (Running.ContainsKey(pJob.Project.ID.ToString())) { Running.TryRemove(pJob.Project.ID.ToString(), out _); } break; case JobStatus.Paused: if (Running.ContainsKey(pJob.Project.ID.ToString())) { Running.TryRemove(pJob.Project.ID.ToString(), out _); } Paused.TryAdd(pJob.Project.ID.ToString(), pJob); break; case JobStatus.UnScheduled: if (Paused.ContainsKey(pJob.Project.ID.ToString())) { Paused.TryRemove(pJob.Project.ID.ToString(), out _); } if (Running.ContainsKey(pJob.Project.ID.ToString())) { Running.TryRemove(pJob.Project.ID.ToString(), out _); } break; case JobStatus.Running: case JobStatus.Scheduled: break; } }; pJob.Start().Wait(); }