public void Dispose ()
{
if (!disposed) {
active = false;
watcher.Changed -= OnChanged;
watcher.Created -= OnChanged;
watcher.Deleted -= OnChanged;
watcher.Renamed -= OnChanged;
lock (queue) {
queue.Clear ();
}
watcher.Dispose ();
disposed = true;
}
}