public static bool GetInstance(out IFileWatcher watcher) { if (KeventWatcher.failed) { watcher = null; return(false); } if (KeventWatcher.instance != null) { watcher = KeventWatcher.instance; return(true); } KeventWatcher.watches = Hashtable.Synchronized(new Hashtable()); KeventWatcher.requests = Hashtable.Synchronized(new Hashtable()); KeventWatcher.conn = KeventWatcher.kqueue(); if (KeventWatcher.conn == -1) { KeventWatcher.failed = true; watcher = null; return(false); } KeventWatcher.instance = new KeventWatcher(); watcher = KeventWatcher.instance; return(true); }