क्या कस्टम सिस्टम तक पहुंचने का कोई आसान तरीका है। कॉन्फ़िगरेशन-आधारित कॉन्फ़िगरेशन डेटा थ्रेड-सुरक्षित इंटरफ़ेस के माध्यम से प्रत्येक निष्पादन संदर्भ को कॉन्फ़िगरेशन जानकारी लोड/पुनः लोड करने की आवश्यकता के बिना, जो कम्प्यूटेशनल रूप से बोझिल होगा?सिस्टम का थ्रेड सुरक्षित उपयोग। कॉन्फ़िगरेशन
System.Configuration कक्षाएं, सबसे (सभी?) माइक्रोसॉफ्ट के नेट पुस्तकालय दस्तावेज में अन्य वर्गों, निम्नलिखित धागे की सुरक्षा जानकारी से एनोटेट की तरह:
किसी भी सार्वजनिक स्थैतिक (विजुअल बेसिक में साझा) सदस्यों इस प्रकार के धागे सुरक्षित हैं। किसी भी इंस्टेंस सदस्यों को थ्रेड सुरक्षित होने की गारंटी नहीं है।
इस के अपने पढ़ने के द्वारा, ConfigurationSection
वस्तुओं ConfigurationManager.GetSection(string)
और अन्य समान पद्धति (उदा OpenExeConfiguration(string exePath).GetSection(string)
) धागे की सुरक्षित माना नहीं किया जाना चाहिए से लौटे और इस तरह कई निष्पादन संदर्भों द्वारा नहीं किया जाना चाहिए। यह एक सिंगलटन में ConfigurationSection
संग्रहीत करने पर रोक लगाता है जो अन्यथा थ्रेड-सुरक्षित होगा क्योंकि जब सेक्शन ऑब्जेक्ट तक पहुंच सुरक्षित हो सकती है, तो ऑब्जेक्ट के सदस्य स्वयं सुरक्षित नहीं होते हैं। GetSection
को
एकाधिक कॉल, तथापि, विन्यास फाइल के फिर से पार्स करने और नई ConfigurationSection
उदाहरण हैं जिनमें एक उच्च भूमि के ऊपर विन्यास पर विचार किया है आवंटन की आवश्यकता होती है की संभावना है कभी आरंभीकरण के बाद बदलने की संभावना नहीं है। इसके अलावा, कॉन्फ़िगरेशन डेटा को किसी अन्य ऑब्जेक्ट में कॉपी करना जिसे थ्रेड-सुरक्षित बनाया गया है, अंतर्निहित कॉन्फ़िगरेशन पैकेज का उपयोग करने के मुख्य लाभों में से एक को पहली जगह में खो देता है (बिना बॉयलरप्लेट के टाइप-रूपांतरित और मान्य कॉन्फ़िगरेशन जानकारी तक आसान पहुंच कोड)।
तो, System.Configuration
का उपयोग थ्रेड-सुरक्षित तरीके से अतिरिक्त पार्सिंग और कॉन्फ़िगरेशन अनुभागों के आवंटन के बिना करने का कोई तरीका है? क्या आप अपने ConfigurationSection
को माइक्रोसॉफ्ट द्वारा प्रदान की गई गारंटी की कमी से मुक्त करते हैं, भले ही आप इसे System.Configuration
इंटरफेस के माध्यम से एक्सेस कर रहे हों (और यदि हां, तो ConfigurationSection
के इंडेक्सर तक पहुंचने पर आप इसे थ्रेड-सुरक्षित कैसे लागू करेंगे कॉन्फ़िगर किए गए डेटा तक पहुंचने के लिए आवश्यक है)?
इस कारण से पिछले 5 महीनों में मुझे आईआईएस सर्वर यादृच्छिक रूप से दुर्घटनाग्रस्त हो रहा है। यह नहीं पता था कि क्यों (एमएससीआरएलआईबी में क्रैश एक ढेर ओवरफ्लो था) जब तक यह मेरी देव मशीन पर हुआ, और एक ऐपसेटिंग कॉल ने इसका कारण बना दिया था। मुझे लगता है कि यह मेरे प्रश्न का उत्तर देता है। धन्यवाद। –