2008-11-11 39 views

回答

1

快速搜索沒有顯示任何結果。但接口很簡單,擴展Queue類並添加對接口的支持幾乎是微不足道的。只需覆蓋所有方法:

// this isn't the best code ever; refactor as desired 
protected void OnCollectionChanged(NotifyCollectionChangedEventArgs ccea){ 
    var temp = CollectionChanged; 
    if(temp != null) temp(this, ccea); 
} 

// and later in the class 

public override SomeMethodThatAltersTheQueue(object something){ 
    // record state of collection prior to change 
    base.SomeMethodThatAltersTheQueue(something) 
    // create NotifyCollectionChangedEventArgs with prior state and new state 
    OnCollectionChanged(ccea); 
} 
+0

不幸的是,.Net通用隊列類不允許Enqueue()或Dequeue()在子類中重寫。 – 2008-11-11 15:22:58

0

我使用了與克里斯溫漢姆相同的方法。在負載下,性能會受到影響,因爲需要爲每個Enqueue/Dequeue分配新的NotifyCollectionChangedEventArgs。

無論如何,在Enqueue中,發送帶有NotifyCollectionChangedAction.Add的args,添加的項目以及Count-1作爲索引。在Dequeue中,發送帶有NotifyCollectionChangedAction.Remove的args,刪除該項目,並索引爲0.