protected override void Dequeue() { CandidateFile candidate; if (queue.TryDequeue(out candidate)) { try { if (ExifProvider.IsExifAvailable(basePath, candidate.FullFilename)) { logger.Error("prepare: exif exists for {0}", candidate.FullFilename); enqueueCreate(candidate); } else { lock (exifFolders) { var key = ExifProvider.GetFolderKey(candidate.FullFilename); ExifFolder exifFolder; if (!exifFolders.TryGetValue(key, out exifFolder)) { exifFolder = new ExifFolder(Path.GetDirectoryName(candidate.FullFilename), candidate); exifFolders[key] = exifFolder; enqueueGetExif(exifFolder); } else { exifFolder.Add(candidate); } } } } catch (Exception e) { logger.Error("Exception preparing {0}: {1}", candidate.FullFilename, e); } } else { Thread.Sleep(0); } }
public void Enqueue(ExifFolder exifFolder) { queue.Enqueue(exifFolder); }