मैंने फ़ंक्शन में LINQ क्वेरी के परिणाम लौटने पर Collection was modified; enumeration operation may not execute
त्रुटियों के कुछ मामलों में भाग लिया है ... (मुझे फ़ंक्शन को इंटरफ़ेस के कार्यान्वयन के रूप में जोड़ना चाहिए और परिणाम इस मॉड्यूल को छोड़ दें किसी अन्य रूप में प्रयोग की जाने वाली।)क्या मुझे हमेशा कॉल करना चाहिए। LINQ क्वेरी परिणामों पर ToArray फ़ंक्शन में लौटाया गया है?
Public Function GetTheFuzzyFuzzbuzzes() As IEnumerable(of FuzzBuzz) _
Implements IFoo.GetTheFuzzyFuzzBuzzes
Return mySecretDataSource.Where(Function(x) x.IsFuzzy)
End Function
मैं, एक नियम के रूप में, हमेशा .ToArray
बुलाना चाहिए जब एक समारोह या संपत्ति गेटर में LINQ क्वेरी का परिणाम लौटने अगर अंतर्निहित डेटा संभावित परिवर्तित करने की है? मुझे पता है कि ऐसा करने में थोड़ा सा दक्षता है, लेकिन मुझे लगता है कि यह सुरक्षित करने की बात है, और इस प्रकार अस्थायी युग्मन मुद्दों से बचने के लिए हमेशा किया जाना चाहिए।
संपादित करें:
मुझे समस्या डोमेन समझा एक बेहतर काम करते हैं।
हमारे पास चिंता के हमारे मुख्य क्षेत्र का ग्राफ आधारित कार्यान्वयन है, जो एक अनुकूलन समस्या है। इकाइयों को ग्राफ नोड्स के रूप में दर्शाया जाता है। विभिन्न लागतों और अन्य मापदंडों के साथ भारित एज नोड्स के बीच संबंध व्यक्त करते हैं। चूंकि उपयोगकर्ता डेटा का उपयोग करता है, हम अलग-अलग किनारों का निर्माण करते हैं और वर्तमान विकल्प के खिलाफ विभिन्न विकल्पों का मूल्यांकन करते हैं ताकि वे प्रत्येक विकल्प के परिणामों पर प्रतिक्रिया दे सकें। अन्य उपयोगकर्ताओं और कार्यक्रमों द्वारा सर्वर पर डेटा में किए गए परिवर्तन को पुश प्रौद्योगिकी के माध्यम से तुरंत क्लाइंट को प्रचारित किया जाता है। हम बहुत सारे थ्रेडिंग का उपयोग करते हैं ...
... इसका मतलब यह है कि हमारे पास बहुत ही अतुल्यकालिक तरीके से बहुत सी चीजें हो रही हैं।
हमारा कार्यक्रम एक अनुबंध परियोजना और एक हल-पर-रन-टाइम कार्यान्वयन परियोजना के साथ मॉड्यूल (एकल जिम्मेदारी सिद्धांत के आधार पर) में विभाजित है, जिसका अर्थ है कि हम इंटरफेस पर भारी निर्भर हैं। हम आम तौर पर IENumerable का उपयोग कर मॉड्यूल के बीच डेटा पास करते हैं (क्योंकि वे अपरिवर्तनीय प्रकार के हैं)।
क्या आप एक प्रोग्राम के छोटे, संकलित-सक्षम संस्करण को पोस्ट कर सकते हैं जो इसे पुन: उत्पन्न करता है? –
दुर्भाग्यवश हमारे कोड-बेस 68 परियोजनाओं के साथ 50000+ एलओसी की तरह है, इसलिए एक अच्छा उदाहरण तैयार करना कठिन होगा। प्रश्न में विस्तारित विवरण देखें। –