有沒有人編寫過實現INotifyCollectionChanged的.Net通用隊列的版本,或者是否有一個隱藏在.Net框架深處的某個地方?ObservableQueue?
0
A
回答
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
我使用了與克里斯溫漢姆相同的方法。在負載下,性能會受到影響,因爲需要爲每個Enqueue/Dequeue分配新的NotifyCollectionChangedEventArgs。
無論如何,在Enqueue中,發送帶有NotifyCollectionChangedAction.Add的args,添加的項目以及Count-1作爲索引。在Dequeue中,發送帶有NotifyCollectionChangedAction.Remove的args,刪除該項目,並索引爲0.
相關問題
不幸的是,.Net通用隊列類不允許Enqueue()或Dequeue()在子類中重寫。 – 2008-11-11 15:22:58