Example #1
0
        /// <summary>
        /// Handles an item being added to a folder that is being watched.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Folder_ItemAdded(object sender, DirectoryItemAddedEventArgs e)
        {
            // register the new item.
            var currentMode = _visitMode;

            _visitMode = VisitMode.Register;
            e.NewItem.Accept(this);
            _visitMode = currentMode;
            OnRaiseItemAdded(e);
        }
Example #2
0
        protected virtual void OnRaiseItemAdded(DirectoryItemAddedEventArgs args)
        {
            // TODO: Only raise the event if the item/s matches watch pattern.
            var matches = GetMatchingFilters(args.NewItem.Path).ToArray();

            if (matches.Length > 0)
            {
                var watcherArgs = new DirectoryWatcherFilterMatchedEventArgs <DirectoryItemAddedEventArgs>(args, matches);
                EventHandler <DirectoryWatcherFilterMatchedEventArgs <DirectoryItemAddedEventArgs> > handler = ItemAdded;
                handler?.Invoke(this, watcherArgs);
            }
        }
Example #3
0
        protected virtual void OnRaiseItemAdded(IDirectoryItem newItem)
        {
            // Make a temporary copy of the event to avoid possibility of
            // a race condition if the last subscriber unsubscribes
            // immediately after the null check and before the event is raised.
            EventHandler <DirectoryItemAddedEventArgs> handler = ItemAdded;

            // Event will be null if there are no subscribers
            if (handler != null)
            {
                var args = new DirectoryItemAddedEventArgs(newItem);

                // Use the () operator to raise the event.
                handler(this, args);
            }
        }