public void Enqueue(FileChangeEvent evt) { lock (intersection) { if (evt.ChangeType == FileChangeType.Renamed && events.ContainsKey(evt.OldFullPath)) { events.Remove(evt.OldFullPath); } if (!events.ContainsKey(evt.FullPath)) { events[evt.FullPath] = new List <FileChangeEvent>(); } if (events[evt.FullPath].LastOrDefault() != evt) { events[evt.FullPath].Add(evt); } } }
void DoConversions() { while (running) { FileChangeEvent evt = queue.Dequeue(); if (evt != null) { switch (evt.ChangeType) { case FileChangeType.CreatedOrUpdated: UpdateMatAsync(evt.FullPath, evt.Source.OutputDirectory, evt.Source.Options); break; case FileChangeType.Renamed: RenameMat(new FileInfo(evt.OldFullPath), new FileInfo(evt.FullPath), evt.Source.OutputDirectory); break; } } else { Thread.Sleep(1000); } } }