Ejemplo n.º 1
0
        /// <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();
            }
        }
Ejemplo n.º 2
0
        /// <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();
            }
        }
Ejemplo n.º 3
0
        /// <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();
            }
        }
Ejemplo n.º 4
0
        /// <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();
            }
        }
Ejemplo n.º 5
0
 private static void Raise(CollectionEventHandler <T> handler, T item) => handler?.Invoke(item);