internal void BeginConsume(NewEntryHandler fsEntriesHandler) { while (true) { MonitorQueue(fsEntriesHandler); } }
private void MonitorQueue(NewEntryHandler fsEntriesHandler) { if (FsEntriesQueue.Count > 0) { HierarchicalLink <FileSystemInfo> newFsEntry; try { Monitor.Enter(FsEntriesQueue); newFsEntry = FsEntriesQueue.Dequeue(); } finally { Monitor.Exit(FsEntriesQueue); } fsEntriesHandler.Invoke(newFsEntry); } else { fsEntryScannedEvent.WaitOne(); } }