Избегайте нескольких FileSystemWatcherC#

Место общения программистов C#
Ответить
Anonymous
 Избегайте нескольких FileSystemWatcher

Сообщение Anonymous »

В настоящее время я работаю над собственным проводником, который позволяет пользователю определять несколько корневых каталогов. Чтобы фиксировать все изменения в системе, я использую FileSystemWatcher для всех указанных корневых каталогов.
Теперь, конечно, может случиться так, что пользователь определит два корневых каталога, которые содержат те же пути. Например, C:\Windows и C:\Windows\System32\en-US
Затем, когда файл в этих путях изменяется (например, C :\Windows\System32\en-US\Licenses), соответствующий обработчик событий выполняется дважды.
Так есть ли способ сравнить FileSystemWatchers с помощью наблюдаемые пути и исключить все дубликаты?
Я уже думал о том, чтобы назначить всем путям один FileSystemWatcher и соответственно не следить за подпутями. Но я предполагаю, что это не так эффективно.
К вашему сведению:

Код: Выделить всё

foreach (string rootPath in Settings.RootPaths)
{
FileSystemWatcher watcher = new FileSystemWatcher(rootPath);

watcher.SynchronizingObject = this.treeView;
watcher.NotifyFilter = NotifyFilters.Attributes
| NotifyFilters.CreationTime
| NotifyFilters.DirectoryName
| NotifyFilters.FileName
| NotifyFilters.LastAccess
| NotifyFilters.LastWrite
| NotifyFilters.Security
| NotifyFilters.Size;
watcher.IncludeSubdirectories = true;
watcher.EnableRaisingEvents = true;

watcher.Created += ElementCreatedEventHandler;
watcher.Deleted += ElementDeletedEventHandler;
watcher.Renamed += ElementRenamedEventHandler;
}
Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/701 ... temwatcher
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»