Esempio n. 1
0
 void ev_SubdirectoryChanged(FsEventsWatcher sender, string dirpath)
 {
     if (_watchcontents)
     {
         FireSubdirectoryChanged(dirpath);
     }
 }
Esempio n. 2
0
 void StopWatcher()
 {
     Trace("Stopping FileSystemWatcher");
     if (_fswatcher != null)
     {
         _fswatcher.Dispose();
     }
     _fswatcher = null;
 }
Esempio n. 3
0
 void ev_RootChanged(FsEventsWatcher sender, string rootpath, bool exists)
 {
     if (!Exists && Directory.Exists(_fullpath))
     {
         Exists = true;
         FireAvailabilityChanged();
     }
     else if (Exists && !Directory.Exists(_fullpath))
     {
         Exists = false;
         FireAvailabilityChanged();
     }
 }
Esempio n. 4
0
        void StartWatcher()
        {
            Trace("Starting FileSystemWatcher");

            if (_fswatcher != null)
            {
                _fswatcher.Dispose();
            }

#if SYSTEM_MACOSX
            _fswatcher                      = new FsEventsWatcher(_fullpath);
            _fswatcher.RootChanged         += ev_RootChanged;
            _fswatcher.SubdirectoryChanged += ev_SubdirectoryChanged;
#else
            _fswatcher      = new FileSystemWatcher();
            _fswatcher.Path = _fullpath;
            _fswatcher.IncludeSubdirectories = true;
            _fswatcher.NotifyFilter          = NotifyFilters.FileName
                                               | NotifyFilters.DirectoryName
                                               | NotifyFilters.Attributes
                                               | NotifyFilters.Size
                                               | NotifyFilters.LastWrite
                                               | NotifyFilters.CreationTime
                                               | NotifyFilters.Security;
            _fswatcher.Changed += new FileSystemEventHandler(ev_FileChanged);
            _fswatcher.Created += new FileSystemEventHandler(ev_FileChanged);
            _fswatcher.Deleted += new FileSystemEventHandler(ev_FileChanged);
            _fswatcher.Renamed += new RenamedEventHandler(ev_FileRenamed);
            try {
                // this can throw if, e.g. dir went away between when we
                // checked for existence and now. don't bring down process.
                _fswatcher.EnableRaisingEvents = true;
            } catch {
                Trace("Failed to start FileSystemWatcher: directory is inaccessible");
                Exists = false;
            }
#endif
        }