private void OnChange(object sender, FileSystemEventArgs e) { // make sure the path exist on the file system. Changes can't be made to paths that don't exist if (File.Exists(e.FullPath) || Directory.Exists(e.FullPath)) { // check if the path exist in the _existingPaths collection if (!_existingPaths.Contains(e.FullPath)) { return; } FileSystemObserverKey key = new FileSystemObserverKey() { Name = new FileInfo(e.Name).Name, FullPath = e.FullPath, EventType = FileSystemObserverEventType.ChangedEventType }; FileSystemObserverValue value = new FileSystemObserverValue() { EventType = FileSystemObserverEventType.ChangedEventType, Timestamp = DateTime.Now }; OnFileSystemObserverEvent(key, value); } }
private void OnFileSystemObserverEvent(FileSystemObserverKey key, FileSystemObserverValue value) { // common method for adding events to pendingEvents collection from the On event handlers // block other threads from access pending events while processing lock (_pendingEvents) { // save most recent event _pendingEvents[key] = value; // start timer if not already started if (!_timerStarted) { _timer.Change(100, 100); _timerStarted = true; } } }
private void OnRename(object sender, RenamedEventArgs e) { FileSystemObserverKey key = new FileSystemObserverKey() { OldFullPath = e.OldFullPath, OldName = new FileInfo(e.OldName).Name, FullPath = e.FullPath, Name = new FileInfo(e.Name).Name, EventType = FileSystemObserverEventType.RenamedEventType }; FileSystemObserverValue value = new FileSystemObserverValue() { EventType = FileSystemObserverEventType.RenamedEventType, Timestamp = DateTime.Now }; OnFileSystemObserverEvent(key, value); }
private void OnDelete(object sender, FileSystemEventArgs e) { // check if the path exist in the _existingPaths collection if (_existingPaths.Contains(e.FullPath)) { FileSystemObserverKey key = new FileSystemObserverKey() { Name = new FileInfo(e.Name).Name, FullPath = e.FullPath, EventType = FileSystemObserverEventType.DeletedEventType }; FileSystemObserverValue value = new FileSystemObserverValue() { EventType = FileSystemObserverEventType.DeletedEventType, Timestamp = DateTime.Now }; OnFileSystemObserverEvent(key, value); } }