/// <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
     {
         //失败日志
     }
 }
コード例 #2
0
 /// <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 => { /* 处理异常 */ },
                       () => { /* 处理完成 */ }
                       );
        }