Question

Quelqu'un a-t-il déjà écrit une version de la file d'attente générique .Net qui implémente INotifyCollectionChanged, ou existe-t-il déjà une version cachée au fond du framework .Net?

Était-ce utile?

La solution

Une recherche rapide n'a donné aucun résultat. Mais l'interface est simple et il serait presque trivial d'étendre la classe de file d'attente et d'ajouter un support pour l'interface. Remplacez donc simplement toutes les méthodes:

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

Autres conseils

J'ai utilisé la même approche que Chris Wenham. Sous charge, les performances en pâtissent car de nouveaux NotifyCollectionChangedEventArgs doivent être alloués pour chaque file d'attente / file d'attente.

Quoi qu'il en soit, dans la file d'attente, envoyez des arguments avec NotifyCollectionChangedAction.Add, l'élément ajouté et Count-1 en tant qu'index. Dans la file d'attente, envoyez les arguments avec NotifyCollectionChangedAction.Remove, l'élément supprimé et l'index 0.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top