Frage

Hat eine Version von .NET generischer Queue jemand geschrieben, dass INotifyCollectionChanged implementiert, oder gibt es eine tief im Rahmen .Net versteckt irgendwo schon?

War es hilfreich?

Lösung

Eine schnelle Suche ergab keine Ergebnisse. Aber die Schnittstelle ist einfach, und es wäre fast trivial sein, die Queue-Klasse zu erweitern und die Unterstützung für die Schnittstelle. außer Kraft setzen einfach alle Methoden so:

// 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);
}

Andere Tipps

Ich habe den gleichen Ansatz wie Chris Wenham. Unter Last leidet die Leistung, da neue NotifyCollectionChangedEventArgs müssen für jede Enqueue / Dequeue zugeordnet werden.

Unabhängig davon, in der Enqueue, senden args mit NotifyCollectionChangedAction.Add, dem Elemente hinzugefügt, und Count-1 als Index. Im Dequeue, senden args mit NotifyCollectionChangedAction.Remove, das Element entfernt und Index 0.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top