Я использую FileSystemWatcher в своем коде, чтобы отслеживать любые изменения / переименования / добавления файла в контролируемой директории. Теперь мне нужно уведомление, если отслеживаемый каталог будет удален.
Есть предложения, как этого добиться?
Я пытался добавить второго наблюдателя в родительский каталог (C:\temp\subfolder1
в приведенном ниже примере) и отфильтровать события по полному пути отслеживаемого каталога (C:\temp\subfolder1\subfolder2
).
Но это не будет работать, если удаление выполняется на уровне каталога выше, и я не хочу отслеживать всю файловую систему. В приведенном ниже примере она должна срабатывать и при удалении C:\temp
, а не только при удалении C:\temp\subfolder1
.
class Program
{
static void Main(string[] args)
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"C:\temp\subfolder1\subfolder2";
watcher.EnableRaisingEvents = true;
watcher.Changed += OnChanged;
watcher.Created += OnChanged;
watcher.Deleted += OnChanged;
watcher.Renamed += OnChanged;
Console.ReadLine();
}
private static void OnChanged(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.FullPath);
}
}