private void DoRefresh(Object state) { if (_reading) { return; } var fileName = FileName.GetBasePath(); var fi = FileName.AsFile(); if (!fi.Exists) { return; } fi.Refresh(); if (_lastTime.Year > 2000 & fi.LastWriteTime <= _lastTime) { return; } _lastTime = fi.LastWriteTime; XTrace.WriteLine("配置文件改变,重新加载 {0}", fileName); _reading = true; try { var section = new ConfigSection { }; OnRead(fileName, section); Root = section; foreach (var item in _models) { base.Bind(item.Key, false, item.Value); } } catch (Exception ex) { XTrace.WriteException(ex); } finally { _reading = false; } }