Ejemplo n.º 1
0
        int IFiltersList.PurgeDisposedFiltersAndFiltersHavingDisposedThreads()
        {
            int i = ListUtils.RemoveIf(list, 0, list.Count, f => f.IsDisposed || f.Options.Scope.IsDead);

            int itemsToRemove = list.Count - i;

            if (itemsToRemove == 0)
            {
                return(itemsToRemove);
            }

            for (int j = i; j < list.Count; ++j)
            {
                if (!list[j].IsDisposed)
                {
                    list[j].SetOwner(null);
                    list[j].Dispose();
                }
            }
            list.RemoveRange(i, itemsToRemove);

            OnChanged();

            return(itemsToRemove);
        }