Exemple #1
0
 private void Monitor()
 {
     while (!KeventWatcher.stop)
     {
         kevent ev = default(kevent);
         ev.udata = IntPtr.Zero;
         kevent kevent = default(kevent);
         kevent.udata = IntPtr.Zero;
         timespec timespec = default(timespec);
         timespec.tv_sec  = 0;
         timespec.tv_usec = 0;
         int num;
         lock (this)
         {
             num = KeventWatcher.kevent(KeventWatcher.conn, ref kevent, 0, ref ev, 1, ref timespec);
         }
         if (num > 0)
         {
             KeventData data = (KeventData)KeventWatcher.requests[ev.ident];
             KeventWatcher.StopMonitoringDirectory(data);
             KeventWatcher.StartMonitoringDirectory(data);
             this.ProcessEvent(ev);
         }
         else
         {
             Thread.Sleep(500);
         }
     }
     lock (this)
     {
         KeventWatcher.thread = null;
         KeventWatcher.stop   = false;
     }
 }
Exemple #2
0
 public void StopDispatching(FileSystemWatcher fsw)
 {
     lock (this)
     {
         KeventData keventData = (KeventData)KeventWatcher.watches[fsw];
         if (keventData != null)
         {
             KeventWatcher.StopMonitoringDirectory(keventData);
             KeventWatcher.watches.Remove(fsw);
             if (KeventWatcher.watches.Count == 0)
             {
                 KeventWatcher.stop = true;
             }
             if (!keventData.IncludeSubdirs)
             {
             }
         }
     }
 }