/// <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); }
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); } }
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); } }