public ProducerOfWork(GeneratorOfNumbersToSum realProducer, ConcurrentQueueLimitedSize <NumbersToSum> producerConsumerQueue, ManualResetEvent producerEvent, ManualResetEventSlim consumerEvent)
 {
     _producerConsumerQueue = producerConsumerQueue;
     _producerEvent         = producerEvent;
     _realProduce           = realProducer;
     _consumerEvent         = consumerEvent;
     _log = LogManager.GetLogger(typeof(ProducerOfWork));
 }
        public void AddProducer(GeneratorOfNumbersToSum realProducer)
        {
            if (_stopping)
            {
                return;
            }
            var producer = new ProducerOfWork(realProducer, _producerConsumerQueue, _producerEvent, _consumerEvent);

            producers.Add(producer);
            var thread = new Thread(producer.StartProduceWork);

            thread.Start();
        }