/// <summary> /// Wire the event handlers /// </summary> protected void WireEventHandlers() { _server = new HttpServer(Logger ?? Log.Default); WireServerRequestHandler(); WireResponderEventHandlers(); MonitorDirectories.Each(directory => { if (!Directory.Exists(directory)) { Directory.CreateDirectory(directory); } DirectoryInfo directoryInfo = new DirectoryInfo(directory); FileSystemWatchers.Add(directoryInfo.OnChange(CreatedOrChangedHandler)); FileSystemWatchers.Add(directoryInfo.OnCreated(CreatedOrChangedHandler)); FileSystemWatchers.Add(directoryInfo.OnRenamed(RenamedHandler)); }); }
private bool WatchFolder(string path, string pattern, SemaphoreSlim signal) { FileSystemWatcher watcher = new FileSystemWatcher(); Directory.CreateDirectory(path); watcher.Path = path; // Watch for changes in LastAccess and LastWrite times, and // the renaming of files or directories. watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; // Only watch pattern files. watcher.Filter = pattern; // Add event handlers. //watcher.Changed += method; watcher.Created += (object source, FileSystemEventArgs e) => { Console.WriteLine($"File: {e.FullPath} {e.ChangeType} {e.Name}"); // Signal event to wake up and process if awaiting data try { if (signal != null && signal.CurrentCount == 0) { signal.Release(); } } catch (Exception) { } //could be in the middle of being disposed and recreated }; //watcher.Deleted += method; //watcher.Renamed += method; watcher.Error += (object source, ErrorEventArgs e) => { // Specify what is done when a file is changed, created, or deleted. Console.WriteLine($"File: {e.GetType()} {e.ToString()} {e.GetException()}"); }; // Begin watching. watcher.EnableRaisingEvents = true; return(FileSystemWatchers.TryAdd(path, watcher)); }