private void DirectoryScanned(object sender, DirectoryScannedEventArgs e) { scannedDirectories += 1; if (e is DirectoryDeletedEventArgs) { deletedDirectories += 1; } }
private static void OnDirectoryScanned(DirectoryScannedEventArgs eventArgs) { Task.Run(() => { Console.WriteLine($"Scanning for changes at {DateTime.UtcNow.TimeOfDay}"); // Console.WriteLine($"Found files: {string.Join(' ', eventArgs.FilePathModificationTimes.Keys)} in {eventArgs.Directory} at {eventArgs.TimeStamp.ToLocalTime()}"); }); }
protected void CheckForDeletedFiles(DirectoryScannedEventArgs eventArgs) { foreach (var missingFilePath in TrackedPaths.Keys.Except(eventArgs.FilePathModificationTimes.Keys).ToList()) { var missingFileEventArgs = new TrackedFileEventArgs(missingFilePath); TrackedPaths.Remove(missingFilePath); OnTrackedFileMissing?.Invoke(missingFileEventArgs); } }
public void OnDirectoryScanned(DirectoryScannedEventArgs eventArgs) { eventArgs = eventArgs ?? throw new ArgumentNullException(nameof(eventArgs)); if (CancellationToken.IsCancellationRequested) { return; } CheckForNewOrModifiedFiles(eventArgs); CheckForDeletedFiles(eventArgs); }
protected void CheckForNewOrModifiedFiles(DirectoryScannedEventArgs eventArgs) { foreach (var filePathModificationTime in eventArgs.FilePathModificationTimes) { var trackedFileEventArgs = new TrackedFileEventArgs(filePathModificationTime.Key); if (TrackedPaths.TryGetValue(filePathModificationTime.Key, out var value)) { if (value < filePathModificationTime.Value) { OnTrackedFileModified?.Invoke(trackedFileEventArgs); } TrackedPaths[filePathModificationTime.Key] = filePathModificationTime.Value; } else { TrackedPaths.Add(filePathModificationTime); OnNewFileScanned?.Invoke(trackedFileEventArgs); } } }