这个涉及到System.IO.FileSystemWatcher的Changed事件,贴段代码:
private string _configFile;
private string _provider;
private string _connectionString;
public DataSourceConfig()
{
string configFile = ConfigurationManager.AppSettings["DataSourceConfig"];
if (configFile == null)
{
configFile = Path.Combine(HttpRuntime.AppDomainAppPath, "DataSource.config");
}
this._configFile = configFile;
this.Initialize();
System.IO.FileSystemWatcher filechangeevent = new FileSystemWatcher(Directory.GetParent(configFile).FullName, Path.GetFileName(configFile));
filechangeevent.EnableRaisingEvents = true;
filechangeevent.IncludeSubdirectories = false;
filechangeevent.Changed += new FileSystemEventHandler(ConfigFile_Changed);
}
private void Initialize()
{
XmlDocument config = new XmlDocument();
config.Load(this._configFile);
XmlElement root = config.DocumentElement;
this._provider = root.GetAttribute("provider");
this._connectionString = root.GetAttribute("connstring");
this._formats = new DataFormatSections(root.SelectSingleNode("formats").ChildNodes);
this._sections = new DataSourceSections(root.SelectSingleNode("cmds").ChildNodes);
}
private void ConfigFile_Changed(object sender, FileSystemEventArgs e)
{
this.Initialize();
}
这个事件有一个问题,在频繁修改文件时FileSystemWatcher事件多次触发,这个问题可以参考这篇文章,直接连过来了
http://www.cnblogs.com/jzywh/archive/2008/07/23/filesystemwatcher.html