Я создаю службу Windows, которая использует FileSystemWatcher для контроля конкретной папки для добавления определенного типа файла. Из-за разрыва между созданным событием и когда файл действительно готов к обработке, я создал Queue<T>
для хранения имен файлов, которые нуждаются в обработке. В обработчике созданного события элемент добавляется в очередь. Затем, используя таймер, я периодически захватываю первый элемент из очереди и обрабатываю его. Если обработка завершается неудачно, элемент добавляется обратно в очередь, чтобы служба могла повторить обработку позже.
Это отлично работает, но я обнаружил, что у него есть один побочный эффект: первая попытка обработки новых элементов происходит не до тех пор, пока все старые элементы повторной попытки не будут повторены. Поскольку возможно, что очередь может содержать много элементов, я бы хотел, чтобы новые элементы были впереди очереди, чтобы они обрабатывались первыми. Но из Queue<T>
документации нет очевидного способа добавления элемента в очередь.
Я предполагаю, что я мог бы создать вторую очередь для новых элементов и обработать, что один предпочтительнее, но с одной очередью кажется более простым.
Итак, есть ли простой способ добавить элемент в очередь?