/// <summary> /// 设置并监听 /// </summary> /// <param name="jsonFileName">json文件(eg:'settings.json')</param> /// <param name="jsonPath">json文件所在目录</param> public static void SetWatcher(string jsonFileName, string jsonPath) { _jsonFileName = jsonFileName; if (JsonConfigurationProvider.Set(jsonFileName, File.ReadAllText(string.Concat(jsonPath, jsonFileName)))) { Watcher(jsonPath, jsonFileName); } else { //失败日志 } }
/// <summary> /// 文件改变 /// </summary> /// <param name="render"></param> /// <param name="e"></param> private void OnFileChanged(object render, FileSystemEventArgs e) { if (!FileHelper.IsFileLocked(e.FullPath)) { var watcher = render as FileSystemWatcher; watcher.EnableRaisingEvents = false; if (e.ChangeType == WatcherChangeTypes.Changed) { JsonConfigurationProvider.Set(e.Name, File.ReadAllText(e.FullPath)); } watcher.EnableRaisingEvents = true; } }
public void Start(JsonConfigurationPath conf) { var watcher = new FileSystemWatcher(); watcher.IncludeSubdirectories = false; watcher.Path = conf.Path; watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.Size; watcher.Filter = conf.Name; watcher.EnableRaisingEvents = true; Observable.FromEventPattern <FileSystemEventArgs>(watcher, "Changed") .Throttle(TimeSpan.FromSeconds(1)) .Subscribe(e => { if (!FileHelper.IsFileLocked(e.EventArgs.FullPath) && e.EventArgs.ChangeType == WatcherChangeTypes.Changed) { JsonConfigurationProvider.Set(e.EventArgs.Name, File.ReadAllText(e.EventArgs.FullPath)); } }, ex => { /* 处理异常 */ }, () => { /* 处理完成 */ } ); }