/// <summary>
        /// Starts this instance.
        /// </summary>
        public async Task Start()
        {
            await Task.Run(() =>
            {
                _state             = ManualParallelState.Processing;
                var itemsToProcess = _actions.Skip((int)(LowestBreakIndex ?? 0));

                ParallelLoopResult result = Parallel.ForEach(itemsToProcess, _options, ActionWrapper);

                LowestBreakIndex = result.LowestBreakIteration;

                _state = LowestBreakIndex == null
                    ? ManualParallelState.None
                    : _state;
            });
        }
 /// <summary>
 /// Stops this instance.
 /// </summary>
 public void Stop()
 {
     _state = ManualParallelState.Terminated;
 }
 /// <summary>
 /// Pauses this instance.
 /// </summary>
 public void Pause()
 {
     _state = ManualParallelState.Paused;
 }