//private ConcurrentBag<bool> results;
        public SimpleActionBlockPriority(BlockingCollection <WorkItem> inputQueue)
        {
            InputQueue = inputQueue;
            var opts = new ExecutionDataflowBlockOptions()
            {
                MaxDegreeOfParallelism = 2,
                BoundedCapacity        = 2
            };

            _buffer = new PriorityBufferBlock <WorkItem>();

            _queue1 = new ActionPriorityBlock <WorkItem>(job =>
                                                         job.Execute(Thread.CurrentThread.ManagedThreadId + 100), opts);
            _queue2 = new ActionPriorityBlock <WorkItem>(job =>
                                                         job.Execute(Thread.CurrentThread.ManagedThreadId + 200), opts);

            //var linkOptions = new DataflowLinkOptions(){PropagateCompletion = true};

            _buffer.LinkTo(_queue1.HightPriorityTarget, (job) => job.Assigne.StartsWith("q"));
            _buffer.LinkTo(_queue1.LowPriorityTarget, (job) => !job.Assigne.StartsWith("q"));
            _buffer.LinkTo(_queue2.HightPriorityTarget, (job) => job.Assigne.StartsWith("a"));
            _buffer.LinkTo(_queue2.LowPriorityTarget, (job) => !job.Assigne.StartsWith("a"));
        }