Example #1
0
 private DispatcherQueue(string name, Dispatcher dispatcher, TaskExecutionPolicy policy, int maximumQueueDepth, double schedulingRate)
 {
     if (dispatcher == null)
     {
         throw new ArgumentNullException("dispatcher");
     }
     if ((policy == TaskExecutionPolicy.ConstrainQueueDepthDiscardTasks || policy == TaskExecutionPolicy.ConstrainQueueDepthThrottleExecution) && maximumQueueDepth <= 0)
     {
         throw new ArgumentOutOfRangeException("maximumQueueDepth");
     }
     if ((policy == TaskExecutionPolicy.ConstrainSchedulingRateDiscardTasks || policy == TaskExecutionPolicy.ConstrainSchedulingRateThrottleExecution) && schedulingRate <= 0.0)
     {
         throw new ArgumentOutOfRangeException("schedulingRate");
     }
     _dispatcher            = dispatcher;
     _name                  = name;
     _policy                = policy;
     _maximumQueueDepth     = maximumQueueDepth;
     _maximumSchedulingRate = schedulingRate;
     dispatcher.AddQueue(name, this);
     if (policy != TaskExecutionPolicy.Unconstrained)
     {
         _watch = Stopwatch.StartNew();
     }
 }