我想要一个多生产者 - 单一消费者模式,其中生产者等待消费者完成。
那么为什么不调用消费者方法?
因为它是一个多线程环境,我需要消费者逐个处理项目。我想避免手动放置锁(因为那里可能存在陷阱)并使用类似精彩的BlockingCollection。Take()方法阻止消费者直到产生更多的项目,但我也需要它反过来:
消费者应该等待生产,生产者应该等待消费者完成。
我如何实现这一目标?
修改
项目需要逐个处理。但它们来自对Web服务的请求,可能是并发的。所以我有所有服务请求将项目发送给一个消费者。但是,在处理项目之前,请求不应发送响应,因为Web应用程序可能在处理项目之前被回收(并且响应表示"项目已被处理")。但是当请求尚未响应时,Asp.net会尝试不回收应用程序(AFAIK)。