2009-08-10 7 views
9

मैं सी # .NET 2.0 विंडोज अनुप्रयोग का उपयोग कर रहा हूं।ऐप सेटिंग्स में परिवर्तन की आवश्यकता है मेरे आवेदन को पुनरारंभ करने के लिए मैं कैसे बच सकता हूं?

और मैं अपनी एप्लिकेशन सेटिंग्स के लिए app.config का उपयोग कर रहा हूं।

लेकिन ऐपसेटिंग में परिवर्तन रनटाइम परिलक्षित नहीं होता है, इसे एप्लिकेशन को पुनरारंभ करने की आवश्यकता होती है।

मैं इससे कैसे बच सकता हूं।

यहां मेरा कोड स्निपेट है जिसे मैं एप्लिकेशन सेटिंग्स को पढ़ने और लिखने के लिए उपयोग करता था।

मैं इस

string temp = ConfigurationManager.AppSettings.Get(key); 

मैं इस तरह मूल्य जहां नोड वर्तमान कॉन्फ़िगरेशन/appSettings नोड

node.Attributes["value"].Value = value; 
xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile); 

उत्तर

23

आप को ताज़ा करने के

ConfigurationManager.RefreshSection("appSettings")
बुला की कोशिश कर सकते है अद्यतन करने कर रहा हूँ की तरह सेटिंग पढ़ रहा हूँ डिस्क से फ़ाइल के AppSettings अनुभाग। एक बार उन्हें ताज़ा कर दिया गया है, तो आप नए मूल्यों को पढ़ने में सक्षम होना चाहिए।

मैंने अभी इसका परीक्षण किया है और यह वास्तव में काम करता है।

+1

+1 बहुत अच्छा - मुझे नहीं पता था कि आप ऐसा कर सकते हैं! –

+4

रीफ्रेशसेक्शन –

+1

काम नहीं करेगा !!! – shahjapan

1

न ConfigurationManager का उपयोग सेटिंग पढ़ने के बजाय का उपयोग करें:

 System.Configuration.ConfigurationManager.OpenExeConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile).AppSettings.Settings["value"]; 
+0

हां यह भी संभव हो सकता है, लेकिन शायद यह करने का सबसे प्रभावी तरीका नहीं है। – shahjapan

+2

यहां आप कॉन्फ़िगरेशन प्रबंधक का भी उपयोग करते हैं। – SwissCoder

3

वैकल्पिक रूप से, आप एक सिंगलटन 'विकल्प' अपने आवेदन सेटिंग्स पर पकड़ और अपने पढ़ने प्रदर्शन करने के लिए बना सकते हैं/आप के लिए लिखता है। एक बार लोड हो जाने पर, .config को बदलने के लिए पुनः लोड करने की आवश्यकता नहीं होती है, आप बस सिंगलटन पर एक प्रॉपर्टी सेट करते हैं और अपनी। सेव() विधि को कॉल करते हैं।

आपकी सेटिंग्स का 'रनटाइम' संस्करण सिंगलटन में है, डिस्क से पढ़ने की कोई आवश्यकता नहीं है।

+0

+1, मेरे opnion humild में, अब तक का सबसे अच्छा समाधान है। – Cleiton

1
ConfigurationManager.RefreshSection("appSettings"); 

काम करता है !!

लेकिन सावधान रहें कि अगर हम डिबग मोड में हैं, विन्यास फाइल xxxxx.vshost.exe.config, जहां xxxxx अपनी परियोजना का नाम है कहा जा सकता है।

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

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