Exemple #1
0
        public WatchingFileReaderProvider(ApplicationEvents events)
        {
            this.events = events;

            configFileWatcher = new FileSystemWatcher(GetConfigDirectory(), WatchedFilesFilter)
            {
                NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.LastAccess | NotifyFilters.DirectoryName | NotifyFilters.FileName
            };
            configFileWatcher.Created            += OnFileChanged;
            configFileWatcher.Changed            += OnFileChanged;
            configFileWatcher.Renamed            += (sender, e) => events.OnConfigurationChanged();
            configFileWatcher.Deleted            += (sender, e) => events.OnConfigurationChanged();
            configFileWatcher.EnableRaisingEvents = true;
        }
Exemple #2
0
        private void OnFileChanged(object sender, FileSystemEventArgs e)
        {
            try
            {
                // This is needed, because we might receive Changed events while file is still open and written
                FileInfo file = new(e.FullPath);
                using (var fileStream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None))
                {
                    fileStream.Close();
                }

                events.OnConfigurationChanged();
            }
            catch (IOException) { }
        }