private void StartNextJob() { using (Trace.Log()) { if (ActiveJob != null) { ActiveJob.Completed -= OnJobCompleted; } lock (jobQueue) { if (jobQueue.Count == 0) { ActiveJob = null; } ActiveJob = jobQueue.Values[0]; jobQueue.RemoveAt(0); } if (ActiveJob != null) { ActiveJob.Start(); ActiveJob.Completed += OnJobCompleted; } ActiveJobChanged?.Invoke(ActiveJob); } }