/// <summary> /// Starts collection of the given directory watcher and continues collecting all watchers /// which require collecting. /// </summary> /// <param name="directoryWatcher">The directory watcher to start collecting with</param> void CollectSequentially(DirectoryWatcher directoryWatcher) { // Bail out if we're already collecting. It will be picked up again later. if (this.IsCollecting()) { return; } // Set callback and start collecting directoryWatcher.CollectingCompleted += directoryWatcher_CollectingCompleted; directoryWatcher.Collect(); }
void directoryWatcher_CollectingCompleted(DirectoryWatcher directoryWatcher, int count) { // Remove callback directoryWatcher.CollectingCompleted -= directoryWatcher_CollectingCompleted; // Start watching directoryWatcher.Start(); // Get next watcher to collect var toCollect = DirectoryWatchers.FirstOrDefault(dw => dw.CollectionState == CollectionState.CollectionRequired); if (toCollect != null) { CollectSequentially(toCollect); } }