Я использую модель единственного производителя-потребителя с очередью блокировки. Я хотел бы, чтобы производитель, когда он закончил производство, дождался освобождения очереди, прежде чем вернуться.
Я реализовал BlockingQueue, предложенный здесь Марком Гравеллом.
В моей модели производитель (средство визуализации) использует события для уведомления работника (принтера) о том, когда файл обрабатывается (работник помещает элемент в очередь) и когда каждый файл был обработан (завершен).
Прямо сейчас, когда рендеринг завершен, метод заканчивается, и работник убивается, поэтому я получаю 10-15 отрендеренных файлов, которые не были напечатаны.
Я хочу, чтобы обработчик завершенных событий блокировался до тех пор, пока очередь не будет очищена, например, когда будут распечатаны все файлы. Я хочу добавить что-то вроде метода «WaitToClose ()», который будет блокироваться до тех пор, пока очередь не станет пустой.
(Будет ли изменение рабочего потока на IsBackground = true
иметь значение?)