可绑定的集合,顶部插入并从底部移除

时间:2016-01-05 05:07:20

标签: c# wpf

我正在使用ObservableCollection,后台线程中每秒会添加25个项目。使用Insert将项目添加到第0个位置。一段时间后,旧的项目将在后台线程中删除。最后的项目正在使用RemoveAt删除。此集合绑定到数据网格。由于这些操作正在进行,因此CPU使用率正在增加,并且UI没有响应。

我尝试过创建自定义堆栈,但由于无法有效地从底部删除项目,因此无法满足完整的要求。

我需要创建一个可绑定的自定义集合,它将项目插入顶部并以非常有效的方式从底部删除。

期待任何形式的意见/建议。感谢。

1 个答案:

答案 0 :(得分:1)

如何从ObservableCollection派生自定义集合,只添加最少的额外功能?

的内容
class ExtendedObservableCollection<T> : ObservableCollection<T>
{
    public void AddRange(int startingIndex, IEnumerable<T> items)
    {
        var notifier = new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, items.ToList(), startingIndex);

        foreach (var item in items)
        {
            // insert to the underlying collection to avoid change events
            Items.Insert(startingIndex++, item);
        }

        OnCollectionChanged(notifier);
    }

    public void RemoveRange(int startingIndex, int count)
    {
        // Do it yourself
    }
}