timer.Elapsed 开启的事件不能出config中改变的值。
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Text;
using System.Configuration;
namespace ConsoleApplication16
{
class Program
{
private delegate void MyDelegate();
static void Main(string[] args)
{
SetInterval(10000,Show);
Console.ReadLine();
}
private static void SetInterval(int interval, MyDelegate myDelegate)
{
var timer = new System.Timers.Timer { Interval = interval };
timer.Elapsed += ((sender, e) => myDelegate());
timer.Enabled = true;
}
private static void Show()
{
NameValueCollection appsetting = ConfigurationManager.AppSettings;
string s = appsetting.Get("HH");
Console.WriteLine(s);
}
}
}
以下是config文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="HH" value ="1"/>
</appSettings>
</configuration>
开始执行时输出1 1 1 1 。。。。
我把config中的1 改成2后 还是1 1 1 1 。。。
请大侠帮忙!!
谢谢
------解决方案--------------------Config文件是在程序第一次加载的时候读到内存了,你往后读的都是内存的config文件。
------解决方案--------------------事实上你改的没错...但是执行的文件不是以config为后缀的文件,而是.exe.config,试试看.
------解决方案--------------------你按 Ctrl+S 保存了吗?
我试了下可以:
App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="HH" value ="2"/>
</appSettings>
</configuration>
代码:
Show方法
private static void Show()
{
string s=ConfigurationSettings.AppSettings["HH"].ToString();
Console.WriteLine(s);
}
其他和你一样。