我有两个类可以说是ClassA和ClassB。我必须在Galasoft Messenger课程的帮助下进行交流。在ClassA中,我有以下代码: -
A类:
Messenger.Default.Register<NotifyInterface>(this, PerformAction);
private void PerformAction(NotifyInterface objNotify)
{
switch(objNotify.SomeProperty)
{
case "A":
// Do Something
break;
case "B":
// Do something else
break;
}
}
从ClassB我想在Messenger的帮助下发送并行通知,即我想并行执行'case A'和'case B'。我正在做这样的事情。
ClassB的:
System.Threading.ThreadPool.QueueUserWorkItem((object context) =>
{
Messenger.Default.Send<NotifyInterface>(objNotifyCaseA);
}, null);
Messenger.Default.Send<NotifyInterface>(objNotifyCaseB);
但第二个通知在第一个通知结束后才会收到。这是Messenger类的限制,无法并行发送两个通知吗?
答案 0 :(得分:1)
嗯,不确定它是一个bug还是一个设计,但是肯定 - 在发送消息时信使锁(例如,如果你试图从另一个消息的处理程序中发送一条消息,你就会死了 - 锁)。
问题在mvvm light toolkit项目网站上进行了讨论,解决方案被提议为this拉取请求,但是尚未确认并合并到主干中。
作为临时解决方法,在发布新版本的工具包之前,您可以获取源并应用上述更改 - 这些将解决问题。