Пример #1
0
        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);
                }
            }
        }
Пример #2
0
        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();
            }
        }