Я использую FileSystemWatcher
для наблюдения за папкой, и, похоже, это предотвращает удаление родительского папки, но не предотвращает удаление самой папки.
Например, у меня есть файловая структура:
C:\Root\FolderToWatch\...
с FileSystemWatcher
таргетингом на FolderToWatch
. Когда моя программа работает, если я захожу в проводник Windows и пытаюсь удалить Root
, я получаю сообщение об ошибке «Невозможно удалить Root: доступ запрещен».
Однако, если я удалю FolderToWatch
ПЕРВЫМ, я могу удалить Root
без происшествий.
Вот код, если вы хотите поиграться с ним:
static void Main(string[] args) {
var watcher = new FileSystemWatcher(@"C:\Root\FolderToWatch");
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Changed += (sender, e) => Console.WriteLine(e.FullPath);
watcher.Created += (sender, e) => Console.WriteLine(e.FullPath);
watcher.Deleted += (sender, e) => Console.WriteLine(e.FullPath);
watcher.Renamed += (sender, e) => Console.WriteLine(e.FullPath);
watcher.EnableRaisingEvents = true;
Console.WriteLine("Press \'q\' to quit.");
while (Console.Read() != 'q');
}
Почему FileSystemWatcher
так цепляется за родительский объект своей цели, а не за саму цель?