using System.IO; public void WatcherExample() { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = @"C:\temp"; watcher.Filter = "*.txt"; watcher.EnableRaisingEvents = true; watcher.DispatchEvents = true; watcher.Changed += OnChanged; watcher.Created += OnCreated; watcher.Deleted += OnDeleted; watcher.Renamed += OnRenamed; } private void OnChanged(object source, FileSystemEventArgs e) { Console.WriteLine($"File {e.Name} has been changed"); } private void OnCreated(object source, FileSystemEventArgs e) { Console.WriteLine($"File {e.Name} has been created"); } private void OnDeleted(object source, FileSystemEventArgs e) { Console.WriteLine($"File {e.Name} has been deleted"); } private void OnRenamed(object source, RenamedEventArgs e) { Console.WriteLine($"File {e.OldName} has been renamed to {e.Name}"); }
using System.IO; using System.Threading.Tasks; public void WatcherExample() { FileSystemWatcher watcher = new FileSystemWatcher(); watcher.Path = @"C:\temp"; watcher.Filter = "*.txt"; watcher.EnableRaisingEvents = true; watcher.DispatchEvents = false; watcher.Changed += OnChangedAsync; } private async void OnChangedAsync(object source, FileSystemEventArgs e) { if (e.ChangeType == WatcherChangeTypes.Changed) { await Task.Delay(5000); // Simulate an async task Console.WriteLine($"File {e.Name} has been changed"); } }In this example, only changed events detected by the watcher will asynchronously be handled by OnChangedAsync method. The DispatchEvents property is set to false, and a delay is added to simulate an async task. The watcher is set up to monitor for changes to all .txt files in the C:\temp directory. Package Library: System.IO.FileSystemWatcher is part of the .NET Framework Class Library, which is included in the .NET Framework package library.