/// <summary> /// Initializes a new instance of the <see cref="CommandRunner"/> class. /// </summary> /// <param name="processor">The <see cref="IMessageProcessor"/>.</param> /// <param name="receiver">The <see cref="ICommandReceiver"/>.</param> /// <param name="degreeOfParallelism">The maximum degree of parallelism.</param> public CommandRunner(IMessageProcessor processor, ICommandReceiver receiver, int degreeOfParallelism) { if (processor == null) { throw new ArgumentNullException("processor"); } if (receiver == null) { throw new ArgumentNullException("receiver"); } if (degreeOfParallelism <= 0) { throw new ArgumentOutOfRangeException("degreeOfParallelism"); } this.runners = new CommandQueueRunner[degreeOfParallelism]; this.receiver = receiver; for (int i = 0; i < this.runners.Length; i++) { var runner = new CommandQueueRunner(processor, receiver); this.runners[i] = runner; } }