private ReadOnlyThrottledView(TimeSpan bufferTime, IScheduler scheduler, IReadOnlyList <T> collection) : base(collection, true, true) { this.BufferTime = bufferTime; this.refreshSubscription = ThrottledRefresher.Create(this, collection, bufferTime, scheduler, false) .Subscribe(this.Refresh); }
public ThrottledView(IObservableCollection <T> source, TimeSpan bufferTime, IScheduler scheduler) : base(source) { this.scheduler = scheduler; this.bufferTime = bufferTime; this.refreshSubscription.Disposable = ThrottledRefresher.Create(this, source, bufferTime, scheduler, false) .Subscribe(this.Refresh); }
internal static IObservable <IReadOnlyList <NotifyCollectionChangedEventArgs> > Create( IUpdater updater, IEnumerable source, TimeSpan bufferTime, IEnumerable <IObservable <object> > triggers, IScheduler scheduler, bool signalInitial) { var collectionChanges = ThrottledRefresher.Create(updater, source, bufferTime, scheduler, false); var triggersChanges = triggers.Merge() .ThrottleOrDefault(bufferTime, scheduler) .Select(_ => ResetArgses); return(Observable.Merge(collectionChanges, triggersChanges) .StartWithIf(signalInitial, scheduler, ResetArgses) .ThrottleOrDefault(bufferTime, scheduler)); }
private MappingView(IEnumerable <TSource> source, IScheduler scheduler, IMappingFactory <TSource, TResult> factory, params IObservable <object>[] triggers) { Ensure.NotNull(source, nameof(source)); Ensure.NotNull(source as INotifyCollectionChanged, "source"); Ensure.NotNull(factory, nameof(factory)); this.source = source; this.factory = factory; this.mapped.AddRange(source.Select(this.GetOrCreateValue)); this.updateSubscription.Add(ThrottledRefresher.Create(this, source, TimeSpan.Zero, scheduler, false) .ObserveOn(scheduler ?? Scheduler.Immediate) .Subscribe(this.OnSourceCollectionChanged)); if (triggers != null && triggers.Any(t => t != null)) { var triggerSubscription = triggers.Merge() .ObserveOn(scheduler ?? Scheduler.Immediate) .Subscribe(_ => this.Refresh()); this.updateSubscription.Add(triggerSubscription); } this.SetSource(this.mapped); }
public new void SetSource(IEnumerable <T> source) { base.SetSource(source); this.refreshSubscription.Disposable = ThrottledRefresher.Create(this, this.Source, TimeSpan.Zero, null, false) .Subscribe(this.Refresh); }
public ReadOnlySerialView(IEnumerable <T> source) : base(source, true, true) { this.refreshSubscription.Disposable = ThrottledRefresher.Create(this, source, TimeSpan.Zero, null, false) .Subscribe(this.Refresh); }