Example #1
0
 public void AddLast(T item)
 {
     lock (SyncRoot)
     {
         buffer.AddLast(item);
         CollectionChanged?.Invoke(NotifyCollectionChangedEventArgs <T> .Add(item, buffer.Count - 1));
     }
 }
Example #2
0
        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));
            }
        }
Example #3
0
 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);
     }
 }