【发布时间】:2009-07-17 23:11:14
【问题描述】:
我正在使用带有阻塞队列的单一生产者-单一消费者模型。我希望生产者在完成生产后等待队列清空后再返回。
我实现了 Marc Gravell 建议的 BlockingQueue here。
在我的模型中,生产者(渲染器)使用事件来通知工作器(打印机)何时渲染文件(工作器将项目排队)以及每个文件都被渲染(完成)。
现在,当渲染器完成时,方法结束并且工作人员被杀死,所以我最终得到了 10-15 个尚未打印的渲染文件。
我希望完成的事件处理程序一直阻塞,直到队列被清空,例如,当所有文件都被打印时。我想添加类似“WaitToClose()”的方法,该方法将阻塞直到队列为空。
(将工作线程设置为IsBackground = true 会有所不同吗?)
【问题讨论】:
-
我认为 Thread.IsBackground = true 所做的是允许进程完成,即使线程仍在运行。
标签: c# queue blocking producer-consumer