public void AddLast(T item) { lock (SyncRoot) { buffer.AddLast(item); CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs <T> .Add(item, buffer.Count - 1)); } }
public void AddLast(T item) { lock (SyncRoot) { if (capacity == buffer.Count) { var remItem = buffer.RemoveFirst(); CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs <T> .Remove(remItem, 0)); } buffer.AddLast(item); CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs <T> .Add(item, buffer.Count - 1)); } }
public ObservableFixedSizeRingBuffer(int capacity, IEnumerable <T> collection) { this.capacity = capacity; this.buffer = new RingBuffer <T>(capacity); foreach (var item in collection) { if (capacity == buffer.Count) { buffer.RemoveFirst(); } buffer.AddLast(item); } }