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