//--------------------------------------------------------------------- public void AddProcess(ProgressProcess process) { if (process == null) { throw new ArgumentNullException(nameof(process)); } _processes.Insert(0, process); }
private ProgressProcess _getNextProcess(int startIndex) { ProgressProcess nextProcess = null; for (var i = startIndex; (i >= 0) && (i < _processes.Count); i--) { var process = _processes[i]; if (process.State == ProgressProcessState.Waiting) { nextProcess = process; break; } } return(nextProcess); }
//--------------------------------------------------------------------- private int _findProcessIndex(ProgressProcess process) { var processIndex = -1; if (process != null) { for (var i = _processes.Count - 1; i >= 0; i--) { var tmpProcess = _processes[i]; if (ReferenceEquals(tmpProcess, process)) { processIndex = i; break; } } } return(processIndex); }
//--------------------------------------------------------------------- public ProgressProcess GetNextProcessAndDecrementRunProcessCount(ProgressProcess process) { var processIndex = _findProcessIndex(process); if (processIndex == -1) { return(null); } _processes.RemoveAt(processIndex); var nextProcess = _getNextProcess(processIndex - 1); if (_processes.Count == 0) { _resetRunProcessCount(); } return(nextProcess); }
public void RemoveProcess(ProgressProcess process) { _processes.Remove(process); }