收集变空时通知观察者

时间:2013-07-02 12:36:00

标签: c# .net observablecollection

我编写控制台应用程序,它有队列集合,用作消息的工厂。

有什么方法可以让集合在它成为空的时候引发事件。

我只是不想自己开始拉它,不时检查它。

我想过使用ObservableCollection但是当它变空时我没有看到实现引发事件的方法。

感谢您的帮助。

2 个答案:

答案 0 :(得分:5)

当集合的内容发生变化时,

ObservableCollection将触发CollectionChanged event。只需挂钩即可,并在您的事件处理程序中检查集合的Count == 0

答案 1 :(得分:0)

您可以继承ObservableCollectionEx并添加自己的活动:

    public class ObservableCollectionEx<T> : ObservableCollection<T>
    {
        public event EventHandler CollectionEmpty;

        protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
        {
            if (this.Count == 0)
            {
                var eventCopy = this.CollectionEmpty;
                if (eventCopy  != null)
                {
                    eventCopy(this, EventArgs.Empty);
                }
            }

            base.OnCollectionChanged(e);
        }
    }