C #: класс файловой системы - PullRequest
0 голосов
/ 07 ноября 2011

У меня есть вопрос о событии перемещения файла в классе filesystemwatcher. Я хочу остановить перемещение файла или отредактировать его, когда для определенного файла возникает событие перемещения файла, возможно ли это обработать внутри события перемещения?

Ответы [ 3 ]

2 голосов
/ 07 ноября 2011

Вы не можете напрямую "отменить" операцию с помощью обработчика событий.Вы должны будете предоставить компенсирующую операцию, чтобы программно «отменить» любые изменения, которые вы хотите отменить.

2 голосов
/ 07 ноября 2011

Нет, невозможно остановить перемещение или переименование файла с помощью класса FileSystemWatcher.

Если вы посмотрите, ни один из аргументов события, передаваемых событиями в классе FileSystemWatcher, не имеет свойства Cancel. Кроме того, тот факт, что класс просто называется Watcher, немного подсказывает.

Вы можете рассмотреть возможность использования списков контроля доступа, чтобы убедиться, что кто-то не может удалить файл (поскольку перемещение - это просто копирование / удаление). Или, возможно, вы можете попробовать открыть FileStream для файла, чтобы он был заблокирован.

1 голос
/ 07 ноября 2011

Вы получаете события только после того, как факт произошел.Это просто уведомление, а не событие, которое вы должны были бы одобрить.Это также можно догадаться по отсутствующему свойству Cancel или Handled в классе FileSystemEventArgs (в отличие, например, от класса KeyEventArgs ).

Вы можете обнаружить перемещение и попытаться переместить файл назад, основываясь на свойстве OldFullPath RenamedEventArgs , которое вы получите.

Однако это может сбить с толку ваших пользователей или другое программное обеспечение.И постарайтесь не оказаться в бесконечном цикле, когда вы перемещаете файл туда-сюда каждый раз, когда получаете событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...