很少收到MVVM Light消息,否则从未收到过

时间:2015-02-09 23:21:21

标签: wpf mvvm-light messaging dispatcher wpf-4.5

我对MVVM Light消息传递有一个奇怪的问题。我通过我的应用程序使用它,它工作得很好。我现在遇到的问题是,在我尝试发送消息时,我的消息大约有10%被收到。我假设它在90%的时间内被击落而被遗忘,我没有收到任何错误,我的申请就像没有发生任何事情一样。

我所拥有的是具有状态集合的视图中的上下文菜单。每个用户都有一个状态,您可以通过此上下文菜单进行更改。每次状态更改时,我都需要将消息广播到另一个视图模型。这是失败的消息。这是一些代码,如果对您来说不够清楚,请随时向我提出更多问题。

这位于我的构造函数中,从上下文菜单项点击:

this.UpdateUserStatus = new RelayCommand<UserStatusVM>(x =>
    DispatcherHelper.CheckBeginInvokeOnUI(() =>
        {
            UpdateStatus(x);
        }));

来自relay命令的UpdateStatus方法:

private void UpdateStatus(UserStatusVM status)
{
    var userStatusEventId = _userService.CreateUserEvent(status.Id, CurrentUser.Id);

    //This returns a business object that I would like to send
    //over the wire to the other view model
    var userEvent = _userService.GetUserEvent(userStatusEventId);

    if (userEvent != null)
    {
        Messenger.Default.Send<UserEvent>(userEvent, "Broadcast");
    }

    //These fire off a collection changed event
    CurrentUser.StatusId = status.Id;
    CurrentUser.Status = status.Name;
    CurrentUser.UpdatedDate = DateTime.Now;
    CurrentUser.IsOnDuty = UserStatuses.IsOnDuty(status.Id);
}

和其他视图模型中的消息接收:

Messenger.Default.Register<UserEvent>(this, "Broadcast", (userEvent) =>
    {
        proxy.Invoke("NewUserEvent", userEvent);
    });

0 个答案:

没有答案