2009-08-10 8 views
9

Ich benutze C# .NET 2.0 Windows-Anwendung.Änderung in AppSettings muss meine Anwendung neu starten Wie kann ich vermeiden?

und ich verwende app.config für meine Anwendungseinstellungen.

aber Änderung in AppSettings nicht reflektiert Laufzeit, es muss die Anwendung neu gestartet werden.

Wie kann ich es vermeiden?

Hier ist mein Code-Snippet, das ich verwendet habe, um die Anwendungseinstellungen zu lesen und zu schreiben.

Ich lese die Einstellung wie diese

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

ich den Wert wie diese Aktualisierung in dem Knoten ist die aktuelle Konfiguration/appSettings Knoten

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

Antwort

23

Sie versuchen

ConfigurationManager.RefreshSection("appSettings")
Aufruf könnte zu aktualisieren den Abschnitt AppSettings der Datei von der Festplatte. Sobald sie aktualisiert wurden, sollten Sie in der Lage sein, die neuen Werte zu lesen.

Ich habe gerade das getestet und es funktioniert tatsächlich.

+1

+1 Sehr cool - Ich wusste nicht, dass Sie das tun könnten! –

+4

RefreshSection funktioniert nicht –

+1

Es funktioniert !!! – shahjapan

1

Dont Konfigurationsmanager-Einstellungen, um zu lesen, statt:

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

Ja, das ist auch möglich, aber es ist wahrscheinlich nicht der effizienteste Weg, es zu tun. – shahjapan

+2

Hier verwenden Sie auch den ConfigurationManager. – SwissCoder

3

Alternativ könnten Sie eine Singleton ‚Optionen‘ erstellen, um Ihre Anwendungseinstellungen zu halten, und Ihre Lese ausführen/schreibt für Sie. Nach dem Laden muss die .config-Datei nicht neu geladen werden. Sie müssen lediglich eine Eigenschaft für den Singleton festlegen und Ihre .Save() -Methode aufrufen.

Die 'Runtime' Version Ihrer Einstellungen ist im Singleton, keine Notwendigkeit von der Festplatte zu lesen.

+0

+1, In humild mein opnion, das ist die beste Lösung bis jetzt. – Cleiton

1
ConfigurationManager.RefreshSection("appSettings"); 

funktioniert !!

aber vorsichtig sein, wenn wir im Debug-Modus sind, können die Konfigurationsdatei xxxxx.vshost.exe.config genannt werden, wo xxxxx Ihr Projektname ist.