示例#1
0
 private void Consumer()
 {
     using (var handler = new TimerDispatchHandler(_callbacks, _loggerFactory, _flushInterval))
     {
         foreach (var consumingItem in _limitCollection.GetConsumingEnumerable(_cancellationTokenSource.Token))
         {
             handler.Post(consumingItem);
         }
     }
 }
示例#2
0
 public ButterflyDispatcher(IEnumerable <IDispatchCallback> callbacks, int flushInterval, int boundedCapacity, int consumerCount)
 {
     _consumerCount           = consumerCount <= 0 ? DefaultConsumerCount : consumerCount;
     _boundedCapacity         = boundedCapacity <= 0 ? DefaultBoundedCapacity : boundedCapacity;
     _limitCollection         = new BlockingCollection <IDispatchable>(_boundedCapacity);
     _cancellationTokenSource = new CancellationTokenSource();
     _timerDispatchHandler    = new TimerDispatchHandler(callbacks, flushInterval);
     _consumerTask            = new List <Task>(_consumerCount);
     InitializationConsumer();
 }