我在Windows窗體應用程序中創建了一個項目,其中創建了一個事件。當我單擊瀏覽器中的任何頁面時(即FiddlerApplication.AfterSessionComplete),將引發此事件。現在,每當事件觸發時,我都會將數據添加到ObservableCollection中。要檢查列表計數是否增加,我正在使用ObservableCollection的CollectionChanged事件。如果列表計數沒有增加,我想要引發一個事件。如果可觀察列表數不更新引發事件
ObservableCollection<Session> Sessions = new ObservableCollection<Session>();
public void FetchSession() {
#region AttachEventListeners
FiddlerApplication.AfterSessionComplete += new SessionStateHandler(FiddlerApplication_AfterSessionComplete);
Sessions.CollectionChanged += Sessions_CollectionChanged;
}
void Sessions_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
//this fires when Collection count changes
}
void FiddlerApplication_AfterSessionComplete(Session oSession)
{
Monitor.Enter(Sessions);
Sessions.Add(oSession);
Monitor.Exit(Sessions);
}
它們在ObservableCollection類中沒有可用的東西,它可以告訴我Collection數不會增加。我怎樣才能做到這一點?
您知道,您訂閱了哪個活動?收集已更改。當數量不增加時,你會怎麼想?沒有變化。我擔心,你可能也想實現一個異步方法。 可能可以刪除已更改的集合,而是創建兩個自己的事件,如StartObserving和EndObserving,並在兩種方法中比較集合中的條目數量,如果是首選的,則爲異步。 – icbytes
可以請給我一些樣品。 –
因此,您有Montior.Enter ... Monitor.Exit ...您可以在輸入前保存您的Sessions-collection的行計數器。你可以在退出後查詢這個計數器。如果他們是平等的,那麼,你想要什麼,如果不是,做一些不同的事情。 – icbytes