/// <summary>
        /// Конструктор для саоздния объекта <see cref="BalancedTransmitter{TItem}"/>.
        /// </summary>
        /// <param name="source">Источник элементов.</param>
        /// <param name="target">Цель для отпрвки.</param>
        /// <param name="exceptionHandler">Обработчик исключений, возникающих во время получения или отправки.</param>
        /// <param name="minimumThreshold">Минимальное кол-во элементов находящихся в отпрвке, по достижении которого <see cref="BalancedTransmitter{TItem}"/> начинает опрашивать <param name="source"/>.</param>
        /// <param name="maximumThreshold">Максимальное кол-во элементов находящихся в отпрвке, по достижении которого <see cref="BalancedTransmitter{TItem}"/> перестаёт опрашивать <param name="source"/>.</param>
        public BalancedTransmitter(ISource <TItem> source,
                                   ITarget <TItem> target,
                                   IExceptionHandler exceptionHandler,
                                   int minimumThreshold,
                                   int maximumThreshold)
            : base(source, target, exceptionHandler)
        {
            Contract.Requires <ArgumentException>(minimumThreshold >= 0);
            Contract.Requires <ArgumentException>(minimumThreshold < maximumThreshold);

            _maximumThreshold = maximumThreshold;

            _scheduler   = new CountdownTaskScheduler(minimumThreshold);
            _taskFactory = new TaskFactory(_scheduler);
        }
 public void SetUp()
 {
     _countdownTaskScheduler = new CountdownTaskScheduler(0);
 }