我有一个托管在 Windows 服务中的 WCF 服务。
WCF 服务被注入一个ConcurrentQueue<SomeClass>
.
Windows 服务(托管 WCF 服务)也注入了ConcurrentQueue<SomeClass>
.
Windows 服务启动 WCF 服务,并产生一个工作线程。
工作线程将 ( Enqueue
) 对象推SomeClass
送到ConccurrentQueue
.
我希望以某种方式在对象入队时触发 WCF 服务,ConcurrentQueue
以便它可以将其(以及可能在队列中的任何其他对象)出列,并向所有连接的客户端发送消息。
.
两个问题:
如何使 WCF 服务“挂钩”注入的 ConccurentQueue 的“入队”方法,以便在将对象推入队列时 - WCF 服务会对此做些什么?
如果我设法以某种方式挂钩“入队”事件,并且现在 Windows 服务中的工作线程已将两个对象入队 - 这意味着它还会“触发”两次 WCF 服务的“入队挂钩” - 那些两个触发事件发生在不同的线程中?我需要以某种方式确保 WCF 服务按顺序从队列中提取对象。我不想突然看到对于每个 Enqueue 操作 - WCF 服务在单独的线程中触发并将对象拉出......
我希望我的问题足够清楚......
.
[更新]
与 Chris 聊天后,我得出的结论是,最好的方法是将工作线程与 WCF 服务分开,并让工作线程作为客户端调用 WCF 服务。这意味着我不必摆弄队列。