public void Subscribe([NotNull] IDirectoryListener listener) {
if (listener == null) throw new ArgumentNullException(nameof(listener));
if (_failed) return;
if (_innerWatcher != null) {
_innerWatcher.Changed += listener.FileOrDirectoryChanged;
_innerWatcher.Created += listener.FileOrDirectoryCreated;
_innerWatcher.Deleted += listener.FileOrDirectoryDeleted;
_innerWatcher.Renamed += listener.FileOrDirectoryRenamed;
}
lock (_listeners) {
_listeners.Add(listener);
}
}
private static void AddDirectoryListener(IDirectoryListener listener) { if (_watcher == null) { _watcher = new DirectoryWatcher(FileUtils.GetCarSetupsDirectory()); _watcher.Subscribe(new InternalListener()); Logging.Write("[CarSetupsDirectories.InternalListener] Start watching…"); } Listeners.Purge(); Listeners.Add(listener); }