public override IPublisher <int> CreatePublisher(long elements)
        {
            var dp = new DirectProcessor <int>();

            Task.Factory.StartNew(() => {
                while (!dp.HasSubscribers)
                {
                    Thread.Sleep(10);
                }
                long start = SchedulerHelper.NowUTC();
                for (int i = 0; i < elements; i++)
                {
                    while (!dp.Offer(i))
                    {
                        Thread.Sleep(1);
                        if (SchedulerHelper.NowUTC() - start > 1000)
                        {
                            return;
                        }
                    }
                }
                dp.OnComplete();
            }, TaskCreationOptions.LongRunning);

            return(dp);
        }