سؤال

وقد أي شخص كتابة نسخة من قائمة انتظار عام الصافية التي تنفذ INotifyCollectionChanged، أم أن هناك واحدة مخبأة في عمق إطار صافي ما سبق؟

هل كانت مفيدة؟

المحلول

وبحث سريع لم تظهر أية نتائج. ولكن واجهة بسيطة وسيكون تافها تقريبا لتمديد الطبقة قائمة الانتظار وإضافة دعم للواجهة. مجرد تجاوز كافة أساليب هكذا:

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

نصائح أخرى

ولقد استخدمت نفس النهج كريس ينهام. تحت الحمل، يعاني الأداء لأن NotifyCollectionChangedEventArgs الجديد يلزم تخصيصها لكل إدراج بقائمة الانتظار / Dequeue.

وبغض النظر، في إدراج بقائمة الانتظار، وإرسال وسائط مع NotifyCollectionChangedAction.Add، البند المضافة، والعد 1 حيث أن مؤشر. في Dequeue، وإرسال وسائط مع NotifyCollectionChangedAction.Remove، البند إزالتها، ومؤشر 0.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top