5

मुझे प्रकार अभिव्यक्ति < Func < MyType, bool >> पर गहराई है जिसमें 400 के आसपास गहराई है। और कम मूल्यों में कोई समस्या नहीं होती है। और मुझे इस तरह की सीमा के बारे में कुछ भी नहीं मिला। क्या कोई इसे स्पष्ट कर सकता है? क्या मैं इस सीमा को बढ़ा सकता हूं?अभिव्यक्ति वृक्ष गहराई सीमाएं

upd: क्षमा करें, उल्लेख करने के लिए, मैं StackOverflowException हो रही भूल गया:

प्रकार 'System.StackOverflowException' की एक बिना क्रिया का अपवाद System.Core.dll में हुई {का मूल्यांकन नहीं कर सकते अभिव्यक्ति क्योंकि वर्तमान धागा एक स्टैक ओवरफ्लो स्टेट में है।}

+2

आपको क्या अपवाद मिलते हैं? –

+0

"एक समस्या" क्या है? क्या होता है? एक 'StackOverflowException'? या ...? –

+1

मेरे लिए यह थोड़ा रेमंड चेन श्रेणी में पड़ता है [यदि आपको पूछना है, तो आप शायद कुछ गलत कर रहे हैं] (http://blogs.msdn.com/b/oldnewthing/archive/2007/03/01/1775759 .aspx) – AakashM

उत्तर

3

आप कानूनी रूप से स्टैक आकार (हालांकि मैं 400+ आइटम लैम्ब्डा के ज्ञान पर सवाल करता हूं) पर एक सीमा में चल रहा हूं। थ्रैस कन्स्ट्रक्टर का उपयोग करके विशेष रूप से इस संकलन को करने के लिए एक नया धागा बनाना, थ्रेड कन्स्ट्रक्टर का उपयोग करके, एक बड़े ढेर के साथ एक नया धागा बनाना है: http://msdn.microsoft.com/en-us/library/ms149581.aspx

उस थ्रेड में संकलित कॉल करें और स्टैक आकार को बढ़ाएं आवश्यक के रूप में तर्क। यह बाइट्स में है जो मेरा मानना ​​है, जो 1048576 के बारे में डिफ़ॉल्ट बना देगा, इसलिए वहां से शुरू करें और इसे आवश्यकतानुसार बढ़ाएं।

+0

यह समाधान अब पूर्ण ट्रस्ट तक सीमित है। ".NET Framework 4 के साथ शुरुआत, केवल पूरी तरह से भरोसेमंद कोड maxStackSize को उस मान पर सेट कर सकता है जो डिफ़ॉल्ट स्टैक आकार (1 मेगाबाइट) से अधिक है। यदि आंशिक ट्रस्ट के साथ कोड चल रहा है तो maxStackSize के लिए एक बड़ा मान निर्दिष्ट किया गया है, maxStackSize है अनदेखा किया गया है और डिफ़ॉल्ट स्टैक आकार का उपयोग किया जाता है। कोई अपवाद नहीं फेंक दिया जाता है। किसी भी ट्रस्ट स्तर पर कोड अधिकतम स्टैक आकार से कम मान वाले अधिकतमस्टैक आकार को सेट कर सकता है। " – bentayloruk