private void Consumer() { using (var handler = new TimerDispatchHandler(_callbacks, _loggerFactory, _flushInterval)) { foreach (var consumingItem in _limitCollection.GetConsumingEnumerable(_cancellationTokenSource.Token)) { handler.Post(consumingItem); } } }
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(); }