2009-06-17 17 views
5

मैं जानना चाहता हूं कि इस article के अनुसार क्यों और देखने योग्य संग्रह WPF में संग्रह <> संग्रह की तुलना में काफी तेज़ (20 एमएस बनाम 1685ms, जो 800X तेज है) बांधता है। मैं ObservableCollection के आंतरिक भागों को देखा और यह एक सूची का उपयोग करता है के रूप में यह भंडारण संग्रह वस्तु (मैं परावर्तक का इस्तेमाल किया और निर्माता में यह देखा था) हैअवलोकन योग्य चयन डेटाबेस प्रदर्शन

public Collection() 
{ 
    this.items = new List<T>(); 
} 

तो क्या यहाँ हो रहा है?

उत्तर

8

कि लेख में तुलना के बीच नहीं दो सरल बाध्यकारी संचालन है, उन माप जिसमें आप एक WPF ListBox कि पहले से ही या तो एक List<T> या एक ObservableCollection<T> के लिए बाध्य है के लिए एक आइटम जोड़ने के एक परिदृश्य को देखें।

लेखक की टिप्पणी के रूप में:

... CLR List<T> वस्तु स्वचालित रूप से एक संग्रह ईवेंट परिवर्तित उठाना नहीं है। करने के लिए ListBox मिल परिवर्तन लेने के लिए, आप कर्मचारियों की अपनी सूची बनानी है और यह ListBox की ItemsSource संपत्ति के लिए फिर से संलग्न होगा। इस समाधान काम करता है, यह एक विशाल प्रदर्शन प्रभाव परिचय देता है। हर बार जब आप एक नई वस्तु को ListBox की ItemsSource पुन: असाइन, ListBox पहले अपने पिछले आइटम फेंकता दूर है और इसकी पूरी सूची पुन: बनाता है।

इस प्रदर्शन अंतर बताते हैं। हालांकि ObservableCollection<T> एक List<T> के द्वारा समर्थित है, यह INotifyCollectionChanged इंटरफ़ेस है, जो कि सभी अतिरिक्त संसाधन अनावश्यक renders लागू करता है।

+2

अधिक सटीक INotifyCollectionChanged ObservableCollection

+0

द्वारा कार्यान्वित किया गया है धन्यवाद, ब्राइस - सही। –

+0

तो, हम एक सूची 1000 मदों की और एक ObservableCollection 1000 की आइटम वे सही समय का एक ही राशि ले जाएगा है या नहीं? यह समझ में आता है। – Jose

संबंधित मुद्दे