2013-07-02 86 views
0

我编写控制台应用程序,它有队列收集,用作消息的工厂。收集变空时通知观察者

有没有什么方法可以在事件变空时收集事件。

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

我以为使用ObservableCollection但我没有看到一种方法来实现提升事件,当它变成空的。

感谢您的帮助。

+0

有它的''而环(string.IsNullorEmpty(消息)!)? (只是使用它作为例子 - ) – TheGeekZn

+0

@NewAmbition如何检查一个字符串是否为空或空值告诉你关于集合的satus? –

+0

什么是使用模式?我怀疑你可能不想使用事件。你会用什么来举办活动?特别是,是否涉及多线程? –

回答

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); 
     } 
    } 
+0

您举办的活动是一种潜在的竞争条件。阅读这个:http://broadcast.oreilly.com/2010/09/understanding-c-raising-events.html – spender

+0

我冒昧修理。 – spender

+0

@spender着名的事件竞赛条件;)这个问题只有* no *答案。请参阅http://stackoverflow.com/a/786455/870604。由于ObservableCollection并不是线程安全的*每个定义*,所以IMO没有必要关心线程问题。 – ken2k