Пример #1
0
 // ToDo: subscribe to parent path if available and adjust filter
 // eg if D:\ is watched, D:\TEMP can be added there
 // Set a SubscribedPath property for FileWatcherInfo.
 // Also change the way FileWatcherInfo applies filters! Must inspect the path!
 private FileWatcherInfo Subscribe(FileWatcherInfo fileWatcherInfo)
 {
     lock (_watchers)
     {
         bool foundValidWatcher = false; // Indicates whether we found a useful FileWatcher during the foreach.
         foreach (var item in _watchers)
         {
             // Does the current FileWatcher watch the specified path?
             if (item.Key == fileWatcherInfo.Path)
             {
                 foundValidWatcher = !item.Value.IsDisposed;
                 if (foundValidWatcher)
                 {
                     // The watcher is not disposed, add a subscription.
                     _watchers[fileWatcherInfo.Path].AddSubscription(fileWatcherInfo);
                 }
                 else
                 {
                     // No need to keep this disposed watcher referenced.
                     _watchers.Remove(item);
                 }
                 break;
             }
         }
         if (!foundValidWatcher)
         {
             // Existing non-disposed watcher is not found, create a new one.
             var watcher = new FileWatcher(fileWatcherInfo.Path);
             _watchers.Add(fileWatcherInfo.Path, watcher);
             watcher.Disposed += FileWatcher_Disposed;
             watcher.Watching  = true;
             watcher.AddSubscription(fileWatcherInfo);
         }
     }
     return(fileWatcherInfo);
 }
Пример #2
0
 // ToDo: subscribe to parent path if available and adjust filter
 // eg if D:\ is watched, D:\TEMP can be added there
 // Set a SubscribedPath property for FileWatcherInfo.
 // Also change the way FileWatcherInfo applies filters! Must inspect the path!
 private FileWatcherInfo Subscribe(FileWatcherInfo fileWatcherInfo)
 {
   lock (_watchers)
   {
     bool foundValidWatcher = false;  // Indicates whether we found a useful FileWatcher during the foreach.
     foreach (var item in _watchers)
     {
       // Does the current FileWatcher watch the specified path?
       if (item.Key == fileWatcherInfo.Path)
       {
         foundValidWatcher = !item.Value.IsDisposed;
         if (foundValidWatcher)
           // The watcher is not disposed, add a subscription.
           _watchers[fileWatcherInfo.Path].AddSubscription(fileWatcherInfo);
         else
           // No need to keep this disposed watcher referenced.
           _watchers.Remove(item);
         break;
       }
     }
     if (!foundValidWatcher)
     {
       // Existing non-disposed watcher is not found, create a new one.
       var watcher = new FileWatcher(fileWatcherInfo.Path);
       _watchers.Add(fileWatcherInfo.Path, watcher);
       watcher.Disposed += FileWatcher_Disposed;
       watcher.Watching = true;
       watcher.AddSubscription(fileWatcherInfo);
     }
   }
   return fileWatcherInfo;
 }