2012-02-22 9 views
8

का कारण बनता है मेरे पास List<T> है जो एनआईबीबर्ननेट के माध्यम से एक इकाई वर्ग में है। जब मैं उस सूची में .Clear() पर कॉल करता हूं, तो मुझे IndexOutOfRangeException मिल रहा है।कॉलिंग सूची <T> .Clear() इंडेक्सऑटऑफरेंज एक्सेप्शन

मैंने सत्यापित किया है कि उस सूची में वस्तुओं को पहले कहा जाता है, लेकिन एक ही अपवाद फेंक दिया जाता है।

इस विधि को कॉल करते समय आप किस परिस्थिति को अपवाद प्राप्त करने की उम्मीद करेंगे?

private readonly List<VacancyTag> _vacancyTags = new List<VacancyTag>(); 

public virtual void RemoveAllVacancyTags() 
{ 
    _vacancyTags.Clear(); 
} 

संपादित करें:

पागल बात यह है कि जाने के बाद भी अपवाद फेंक दिया है और मैं डिबगर तोड़ने, मैं तत्काल विंडो में वस्तु क्वेरी कर सकता है और इस बात की पुष्टि कर सकते हैं कि गणना() विधि लौटा रहा है है मूल्य 5!

+0

एक बहु सूत्रण मुद्दा के मामले में संभावित डुप्लिकेट http://stackoverflow.com/questions/1429562/problem-with-clearing-a-listt। – Alex

+0

अपवाद या NHibernate फेंकने संग्रह है? – Jaguar

+0

यह अपवाद फेंकने NHHernate नहीं है। अपवाद गुणों के माध्यम से देखकर इसका कोई उल्लेख नहीं है। – starskythehutch

उत्तर

7

एक सामान्य मामला तब होता है जब आपके पास एक ही सूची तक पहुंचने वाले एकाधिक थ्रेड होते हैं।

यदि एक धागा किसी आइटम को हटा देता है, जबकि सूची को किसी अन्य थ्रेड द्वारा साफ़ किया जा रहा है, तो यह अपवाद फेंक दिया जा सकता है।

List<T> कक्षा थ्रेड-सुरक्षित याद रखें।

+0

आपके उत्तर के लिए धन्यवाद, लेकिन मैं कुछ भी नहीं कर रहा हूं जो बहु थ्रेड है। यह एक बोग मानक छोटा वेब ऐप है जो कुछ भी फैंसी नहीं कर रहा है। – starskythehutch

+0

मैं थ्रेड सुरक्षित सूची को लागू करूँगा, बस इसे पूरी तरह से बाहर करने और वापस रिपोर्ट करने के लिए! लिंक के लिए धन्यवाद। – starskythehutch

0

यदि आप धागे का उपयोग कर रहे हैं, तो कृपया Clear() विधि को कॉल करें।

private readonly object obj = new Object(); 

private readonly List<VacancyTag> _vacancyTags = new List<VacancyTag>(); 

public virtual void RemoveAllVacancyTags() 
{ 
    lock(obj) 
    { 
     _vacancyTags.Clear(); 
    } 
} 
+0

एक समवर्ती संग्रह का उपयोग करने की बेहतर कोशिश करें। http://msdn.microsoft.com/en-us/library/dd997305.aspx –