我正在尝试从最新的消息开始阅读MessageQueue中的消息。我知道我可以使用GetAllMessages()。然后循环。但是当队列中有大量消息时它很慢。有一个更好的方法吗?
由于
答案 0 :(得分:1)
在MSMQ 3中,有一项功能可能正是您正在寻找的功能。 ReceiveByLookupId方法可以获取队列中的最后一条消息。
http://msdn.microsoft.com/en-us/library/3w50th9h.aspx
您将使用以下操作:
MessageLookupAction.Last:接收队列中的最后一条消息 将其从队列中删除。 lookupId参数必须设置为0。
如果您使用的是早期版本的MSMQ,则可能必须使用Peek,类似于此博客文章如何解释如何获取消息队列的计数。当你到达最后一个时,你可以接收ReceiveById。
http://jopinblog.wordpress.com/2008/03/12/counting-messages-in-an-msmq-messagequeue-from-c/
答案 1 :(得分:0)
假设性能影响在循环中消息: 如果您想要的只是最后一条消息,则无需遍历所有消息。由于GetAllMessages()返回Message类型的数组,因此只需按索引转到数组中的最后一个元素。
答案 2 :(得分:0)
public void btnLogin_Clicked(object sender, System.EventArgs e)