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