/// <summary> /// Clear all items from data set. /// </summary> public void ClearAll() { try { _lock.EnterWriteLock(); _list.Clear(); CollectionEventHandler?.Invoke(this, new CollectionEventArgs <T>(null, CollectionEventTypeEnum.Cleared)); } finally { _lock.ExitWriteLock(); } }
/// <summary> /// Add item to data set. /// </summary> /// <param name="item">Item.</param> public bool AddItem(T item) { try { _lock.EnterWriteLock(); var added = _list.Add(item); CollectionEventHandler?.Invoke(this, new CollectionEventArgs <T>(new[] { item }, added ? CollectionEventTypeEnum.Added : CollectionEventTypeEnum.ItemIsAlreadyExisted)); return(added); } finally { _lock.ExitWriteLock(); } }
/// <summary> /// Remove item from data set. /// </summary> /// <param name="item"></param> /// <returns>Item.</returns> public bool RemoveItem(T item) { try { _lock.EnterWriteLock(); var removed = _list.Remove(item); CollectionEventHandler?.Invoke(this, new CollectionEventArgs <T>(new[] { item }, removed ? CollectionEventTypeEnum.Removed : CollectionEventTypeEnum.ItemNotFound)); return(removed); } finally { _lock.ExitWriteLock(); } }
/// <summary> /// Add items to data set. /// </summary> /// <param name="items">Items.</param> public void AddItems(T[] items) { try { var added = new List <T>(); _lock.EnterWriteLock(); foreach (var item in items) { if (_list.Add(item)) { added.Add(item); } } CollectionEventHandler?.Invoke(this, new CollectionEventArgs <T>(added.ToArray(), CollectionEventTypeEnum.Added)); } finally { _lock.ExitWriteLock(); } }
private static void Raise(CollectionEventHandler <T> handler, T item) => handler?.Invoke(item);