Dequeue() ничего не приходит в голову, а в таком случае если очереди пуста будем в пустую молотить, можно еще добавить AutoResetEvent как вариант, но мб есть более элегантное решение?
Прикрутить reactive extentions и Сделать из него observable. ?
Тогда можно ActionBlock использовать, меня именно работа с очередью интересует
есть же TryDequeue
Но если коллекция пуста, то зачем нам вообще цикл крутить?
так он и не будет крутиться
Просто встанет в ступор пока не прилетит очередь?)
так тут надо понимать что надо, вечный воркер в фоне, либо новые воркеры которые спавнятся и процессят очередь через определенное время, и умирают
Еще раз. Если тебе надо смотреть очередь постоянно. То либо по таймеру либо хот обзервер. Иначе это фигня всё. Либо в отдельный поток и его блокировать через try
Проще говоря, есть поток который наполняет PriorityQueue, нужен поток который будет извлекать из нее данные, но если данных нет, то цикл извлечения данных должен останавливаться.
IHostedService какой-нибудь который будет неблокирующе ждать просыпаться каждые X миллисикунд, проверять очередь, если что-то есть - процессить данные, и так по кругу
https://michaelscodingspot.com/c-job-queues-with-reactive-extensions-and-channels/
Обсуждают сегодня