public QueueProcessor(string queueName, int threadCount, TaskExecutionQueuePolicy taskExecutionQueuePolicy, Priority priority, int upperBound, int activateItems) { this.queueName = queueName; this.activateItems = activateItems; if (threadCount > 0) { ThreadPriority threadPriority = this.ConvertThreadPriority(priority); this.dispatcher = DispatcherFactory.CreateDispatcher(threadCount, threadPriority, this.queueName); } else { this.dispatcher = DispatcherFactory.DefaultDispatcher; } if (upperBound > 0) { TaskExecutionPolicy taskExecutionPolicy = this.ConvertTaskExecutionPolicy(taskExecutionQueuePolicy); this.dispatcherQueue = new DispatcherQueue(this.queueName, this.dispatcher, taskExecutionPolicy, upperBound); } else { this.dispatcherQueue = new DispatcherQueue(this.queueName, this.dispatcher); } this.upperBound = upperBound; this.port = new Port <T>(); this.teardownPort = new Port <EmptyValue>(); ReportableObjectDirectory.Add(this.queueName, this); }
private TaskExecutionPolicy ConvertTaskExecutionPolicy(TaskExecutionQueuePolicy policy) { switch (policy) { case TaskExecutionQueuePolicy.ConstrainQueueDepthDiscardTasks: { return(TaskExecutionPolicy.ConstrainQueueDepthDiscardTasks); } case TaskExecutionQueuePolicy.ConstrainQueueDepthThrottleExecution: { return(TaskExecutionPolicy.ConstrainQueueDepthThrottleExecution); } default: { return(TaskExecutionPolicy.Unconstrained); } } }