/// <summary>
 /// Fills this collection with items from the source collection that meet the filter requirements.
 /// </summary>
 private void Fill()
 {
     // Clear the collection
     _view = new ObservableCollectionView <T>(base.Comparer);
     // For each item in the source
     Parallel.ForEach(this, item =>
     {
         // Add to view
         FilterCheck(item, () =>
         {
             _view.Add(item);
         });
     });
 }
        /// <summary>
        /// Initializes a new instance of the Skycap.Data.ObservableCollectionView<T> class.
        /// </summary>
        /// <param name="comparer">The comparer to use for the sorting.</param>
        /// <param name="collection">The collection from which the elements are copied.</param>
        /// <param name="filter">The filter.</param>
        public ObservableCollectionView(IComparer <T> comparer, IEnumerable <T> collection, Predicate <T> filter)
            : base(comparer, collection == null ? new T[] { } : collection)
        {
            if (filter != null)
            {
                _filter = filter;

                if (collection == null)
                {
                    _view = new ObservableCollectionView <T>(comparer);
                }
                else
                {
                    _view = new ObservableCollectionView <T>(comparer, collection);
                }
            }
        }