我有两个组件。一个是窗口应用程序,另一个是窗口服务。
窗口应用程序写入消息队列(MSMQ)并且服务正在读取它并处理消息。
服务是否应该一直在寻找新消息的队列...就代码而言,我应该
使用无限while
循环还是Timer
OR
队列中是否有任何事件或回调以将新消息添加到队列中?这样当窗口应用程序向队列添加新消息时,Service 可以知道。
这就是我要使我的应用程序高效的所有要求,因此如果有任何其他方法可以实现这一点,您可以提出建议。
谢谢阅读
问问题
5146 次
1 回答
13
您不需要任何事件或循环。Receive
方法将从队列中读取,如果队列为空,它将阻塞,直到添加新消息。如果您同时需要做其他事情,请将接收代码放在单独的线程中。
您还可以通过使用异步方法来使用BeginReceive
. 当从队列中读取消息时,这实际上会引发一个事件。
于 2012-07-11T16:41:42.157 回答