0

我有两个班级,可以说 ClassA 和 ClassB。我必须在 Galasoft Messenger 类的帮助下进行交流。在 ClassA 中,我有以下代码:-

甲类:

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;
    }
}

我想在 Messenger 的帮助下从 ClassB 发送并行通知,即我想并行执行“案例 A”和“案例 B”。我正在做这样的事情。

B类:

System.Threading.ThreadPool.QueueUserWorkItem((object context) =>
        {
            Messenger.Default.Send<NotifyInterface>(objNotifyCaseA);                
        }, null);

Messenger.Default.Send<NotifyInterface>(objNotifyCaseB);

但是直到第一个通知结束后才收到第二个通知。这是 Messenger 类不能同时发送两个通知的限制吗?

4

1 回答 1

1

好吧,不确定这是错误还是设计使然,但是是的-发送消息时信使锁(例如,如果您尝试从另一条消息的处理程序中发送消息,则会出现死锁)。

该问题在mvvm light toolkit项目站点上进行了讨论,解决方案作为拉取请求提出,但 afaik 尚未确认并合并到主干中。

作为一种临时解决方法,直到发布新版本的工具包,您可以获得源并应用上述更改 - 这些将解决问题。

于 2013-05-21T07:16:19.670 回答