8

我有两个组件。一个是窗口应用程序,另一个是窗口服务。
窗口应用程序写入消息队列(MSMQ)并且服务正在读取它并处理消息。
服务是否应该一直在寻找新消息的队列...就代码而言,我应该
使用无限while循环还是Timer
OR
队列中是否有任何事件或回调以将新消息添加到队列中?这样当窗口应用程序向队列添加新消息时,Service 可以知道。
这就是我要使我的应用程序高效的所有要求,因此如果有任何其他方法可以实现这一点,您可以提出建议。
谢谢阅读

4

1 回答 1

13

您不需要任何事件或循环。Receive方法将从队列中读取,如果队列为空,它将阻塞,直到添加新消息。如果您同时需要做其他事情,请将接收代码放在单独的线程中。

您还可以通过使用异步方法来使用BeginReceive. 当从队列中读取消息时,这实际上会引发一个事件。

于 2012-07-11T16:41:42.157 回答