.NET中的生产者/消费者模式

时间:2014-02-17 18:12:07

标签: c# .net multithreading wcf .net-4.5

我有一个tcp WCF服务,用于计算某些价格并将它们放入队列中供客户端选择并显示。

我想到的第一件事是Producer/Consumer模式。 WCF服务生成价格并将它们放入队列中。然后,客户端将使用队列中准备好的任何工作项。

看看Albahari's BlockingCollection example,他如何解释生产者/消费者模式,我无法理解它。

var pcQ = new PCQueue (1);
Task task = pcQ.EnqueueTask (() => Console.WriteLine ("Easy!"));

如果我在WCF service上运行此操作,我已将一个任务放入队列中进行处理,足够公平。但是一旦在服务端完成任务,我该如何自动将价格推送到客户端?或者这不是我用tcp WCF服务可以做的事情吗?

2 个答案:

答案 0 :(得分:2)

对于你的问题,我可以用两种解决方案思考:

第一个:在你的任务中你将推送逻辑放在你的活动连接中发送结果,但是......你必须为此构建所有的推送环境。

第二种:当你完成任务时,你可以把结果放到另一个端点到客户端,在客户端,你构建一个逻辑来询问服务器“你完成了我的任务吗?答案是什么? “

答案 1 :(得分:0)

听起来你想要使用WCF回调。

Here这个问题可能有助于指导您做您想做的事情。

生产者/消费者模式有效。在这种情况下,WCF回调只是一个实现细节。