void eventStream_Events(object sender, FSEventStreamEventsArgs args) { var interestingFlags = new FSEventStreamEventFlags[] { FSEventStreamEventFlags.ItemCreated, FSEventStreamEventFlags.ItemModified, FSEventStreamEventFlags.ItemRemoved, FSEventStreamEventFlags.ItemRenamed }; var interestingEvents = args.Events .Where(e => interestingFlags.Any(f => e.Flags.HasFlag(f))) .Where(e => IsHead(e.Path)) .ToArray(); foreach (var ev in interestingEvents) { if (ev.Flags.HasFlag(FSEventStreamEventFlags.ItemCreated)) { Task.Run(() => Task.Delay(DetectionToAlertDelayMilliseconds)).ContinueWith(t => EatRepo(ev.Path)); } else if (ev.Flags.HasFlag(FSEventStreamEventFlags.ItemModified)) { EatRepo(ev.Path); } else if (ev.Flags.HasFlag(FSEventStreamEventFlags.ItemRemoved)) { NotifyHeadDeletion(ev.Path); } else if (ev.Flags.HasFlag(FSEventStreamEventFlags.ItemRenamed)) { NotifyHeadDeletion(ev.Path); } } }
void eventStream_Events(object sender, FSEventStreamEventsArgs args) { var interestingFlags = new FSEventStreamEventFlags[] { FSEventStreamEventFlags.ItemCreated, FSEventStreamEventFlags.ItemModified, FSEventStreamEventFlags.ItemRemoved, FSEventStreamEventFlags.ItemRenamed }; var interestingEvents = args.Events .Where(e => interestingFlags.Any(f => e.Flags.HasFlag(f))) .ToArray(); if (interestingEvents.Any()) { PauseWatcherAndScheduleCallback(); } }