public override void Run(RunItemAction action)
            {
                Contracts.Assert(!IsOpenGroup);

                foreach (var item in _items)
                {
                    action(item);
                }
            }
 public ConcurrentGroupedQueue(RunItemAction action, GroupEndAction endAction)
 {
     _runItemAction  = action;
     _groupEndAction = endAction;
     _itemGroupQueue = new Queue <ItemGroup>();
 }
 public abstract void Run(RunItemAction action);
 public override void Run(RunItemAction action)
 {
     Contracts.Assert(!IsOpenGroup);
     Parallel.ForEach(_items, (evt) => action(evt));
 }