ParallelWorkItemDispatcher
ParallelWorkItemDispatcher handles execution of work items by
            queuing them for worker threads to process.
            
                
Number of parallel worker threads
            
Enumerates all the Queues supported by the dispatcher
            
Enumerates all the shifts supported by the dispatcher
            
Event raised whenever a shift has ended.
            
Event raised whenever a shift is starting.
            
Construct a ParallelWorkItemDispatcher
            
Cancel the ongoing run completely.
            If no run is in process, the call has no effect.
            
Dispatch a single work item for execution. The first
            work item dispatched is saved as the top-level
            work item and used when stopping the run.
            
Start execution, setting the top level work,
            enqueuing it and starting a shift to execute it.