Exemplo n.º 1
0
 public QueueProcessor(string queueName, int threadCount, TaskExecutionSchedulingPolicy taskExecutionSchedulingPolicy, Priority priority, double schedulingRate, 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 (schedulingRate > 0.0)
     {
         TaskExecutionPolicy taskExecutionPolicy = this.ConvertTaskExecutionPolicy(taskExecutionSchedulingPolicy);
         this.dispatcherQueue = new DispatcherQueue(this.queueName, this.dispatcher, taskExecutionPolicy, schedulingRate);
     }
     else
     {
         this.dispatcherQueue = new DispatcherQueue(this.queueName, this.dispatcher);
     }
     this.upperBound   = 0;
     this.port         = new Port <T>();
     this.teardownPort = new Port <EmptyValue>();
     ReportableObjectDirectory.Add(this.queueName, this);
 }
Exemplo n.º 2
0
        private TaskExecutionPolicy ConvertTaskExecutionPolicy(TaskExecutionSchedulingPolicy policy)
        {
            switch (policy)
            {
            case TaskExecutionSchedulingPolicy.ConstrainSchedulingRateDiscardTasks:
            {
                return(TaskExecutionPolicy.ConstrainSchedulingRateDiscardTasks);
            }

            case TaskExecutionSchedulingPolicy.ConstrainSchedulingRateThrottleExecution:
            {
                return(TaskExecutionPolicy.ConstrainSchedulingRateThrottleExecution);
            }

            default:
            {
                return(TaskExecutionPolicy.Unconstrained);
            }
            }
        }