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); }