当前位置:编程学习 > C#/ASP.NET >>

winform 修改配置文件后重新读取。

C#一个窗体程序,读取配置文件中一个数据显示在textbox中可修改,修改后点击按钮保存即更新配置文件。
这些都实现了。
可是程序还是用的改之前的数据。

就是一个定时执行的事件,时间写在配置文件里,页面可以修改这个时间。初始化是5分钟执行一次,然后改成10分钟,修改配置文件成功后,程序依然5分钟一次,但是重启这个程序后就变成10分钟了。

什么 this.Refresh();还有重新加载都试过了没什么用 , 所以求助各位大神 ,求指教! --------------------编程问答-------------------- 你的定时是怎么处理的?
应该重新读配置信息赋值给变量就行了



--------------------编程问答--------------------  如果要得到更改后的即时数据,建议自己加一个xml文件,专门做应用程序的配置设置。不要用App.config了  --------------------编程问答-------------------- 没有把新的时间保存到配置文件中! 

QQ群:3753989
--------------------编程问答--------------------


你在每次读取的时候 前面加一句这个 

记得添加 System.Configuration 这个引用 他不是 System 下的那个 配置管理器

System.Configuration.ConfigurationManager.RefreshSection(string sectionName);

--------------------编程问答-------------------- 给分吧,我的 100% 好使。 --------------------编程问答-------------------- string configFileName = Application.ExecutablePath + ".config"; 
System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); 
doc.Load(configFileName); 
string configString = @"configuration/applicationSettings/SetConfig.Properties.Settings/setting[@name='appSetting1']/value"; 
System.Xml.XmlNode configNode = doc.SelectSingleNode(configString); 
if (configNode != null) 

   configNode.InnerText = this.TextBox1.Text; 
   doc.Save(configFileName); 
   Properties.Settings.Default.Reload();  

--------------------编程问答--------------------

全局:
Thread mythread1;
System.Threading.Timer timer;
string configValue="";
Form_Load事件下
 private void MainForm_Load(object sender, EventArgs e)
{
     mythread1 = new Thread(new ThreadStart(RunMyThread1));
     mythread1.IsBackground = true;
     mythread1.Start();
}

 //线程1   获取json数据
private void RunMyThread1()
{
     int times = Convert.ToInt32(getConn("time"));
     TimerCallback timerDelagete = new TimerCallback(getjson);
     timer = new System.Threading.Timer(timerDelagete, null, times, times);
 }

private void getjson()
{
     MessageBox.Show("获取");
}



//获取读取config节点
public string getConn(string config)
{
     configValue = System.Configuration.ConfigurationSettings.AppSettings["" + config+""];
     return configValue;
}
--------------------编程问答--------------------
引用 3 楼  的回复:
没有把新的时间保存到配置文件中! 

QQ群:3753989


不至于这么傻~~ 在加断点调试后好像是只有第一次去获取配置文件值,其他没反应了。

对了至于你说的没改进去,那是不可能的,因为结束调试时vs就弹窗提示已改变是否重新加载。而且关闭程序重新开启时间就变成修改后的了。 --------------------编程问答--------------------
引用 6 楼  的回复:
string configFileName = Application.ExecutablePath + ".config"; 
System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); 
doc.Load(configFileName); 
string configString = @"configuration/applic……


这个是修改配置文件的值,现在的问题是修改成功后不再重新获取里面的值。 --------------------编程问答--------------------
引用 4 楼  的回复:
C# code


你在每次读取的时候 前面加一句这个 

记得添加 System.Configuration 这个引用 他不是 System 下的那个 配置管理器

System.Configuration.ConfigurationManager.RefreshSection(string sectionName);


我操了,这么好的方法 你不用 ,真受不了你。 --------------------编程问答--------------------
引用 4 楼  的回复:
C# code


你在每次读取的时候 前面加一句这个 

记得添加 System.Configuration 这个引用 他不是 System 下的那个 配置管理器

System.Configuration.ConfigurationManager.RefreshSection(string sectionName);


有啊,有引用的。 我这个定时用的是Thread命名空间下的,不是timer
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,