从队列中取消现有对象将返回null

时间:2017-03-16 08:42:30

标签: c# message-queue nservicebus

我有一个WPF应用程序,我使用MVVM,它也使用NServicebus。 我有一个继承自IHandleMessages的BusHandler类,它负责从NServicebus接收消息。 现在,当我收到消息时,我需要将其分配给我的ViewModel的某个值,并引发一些事件以通知我的VIewModel值已更新,现在需要进行处理。 为此,我创建了标准的MS Queue对象并添加到Queue OnChange事件中。 Queue对象是静态的,因此我可以从BusHandler访问它。所以逻辑是:BusHandler从NServicebus接收消息,将消息放入静态Queue对象,这个enqueue方法引发OnChange事件,我的处理方法知道值已更新并需要处理。 现在奇怪的部分: 在从队列中提取对象之前,我检查我的队列是否包含任何内容:

if(Queue.Count>0)
{
var obj = Queue.Dequeue();
...
}

这就是恶魔开始的地方: 在大多数情况下,我成功地接收了对象,但在某些情况下,if条件表明Queue包含某些内容(并且它是真的)但是dequeueing会返回null。

为什么这样,我该如何解决? 也许有更好的方法与Handler类中的ViewModel进行通信?

0 个答案:

没有答案