Wpf MVVM轻消息很少收到,否则从未收到

Wpf MVVM轻消息很少收到,否则从未收到,wpf,mvvm-light,messaging,dispatcher,wpf-4.5,Wpf,Mvvm Light,Messaging,Dispatcher,Wpf 4.5,我对MVVM Light消息有一个奇怪的问题。我正在通过我的应用程序使用它,它工作得很好。我现在遇到了一个问题,在我尝试发送邮件的时候,大约有10%的时间收到我的邮件。我假设它在其他90%的时间里都被遗忘了,我没有收到任何错误,我的应用程序就像什么都没有发生一样继续运行 我所拥有的是一个视图中的上下文菜单,其中包含一组状态。每个用户都有一个状态,您可以通过此上下文菜单进行更改。每次状态更改时,我都需要向另一个视图模型广播一条消息。这是失败的消息。这里有一些代码,如果您不清楚,请随时问我更多问题

我对MVVM Light消息有一个奇怪的问题。我正在通过我的应用程序使用它,它工作得很好。我现在遇到了一个问题,在我尝试发送邮件的时候,大约有10%的时间收到我的邮件。我假设它在其他90%的时间里都被遗忘了,我没有收到任何错误,我的应用程序就像什么都没有发生一样继续运行

我所拥有的是一个视图中的上下文菜单,其中包含一组状态。每个用户都有一个状态,您可以通过此上下文菜单进行更改。每次状态更改时,我都需要向另一个视图模型广播一条消息。这是失败的消息。这里有一些代码,如果您不清楚,请随时问我更多问题

它位于我的构造函数中,从上下文菜单项触发,单击:

this.UpdateUserStatus = new RelayCommand<UserStatusVM>(x =>
    DispatcherHelper.CheckBeginInvokeOnUI(() =>
        {
            UpdateStatus(x);
        }));
this.UpdateUserStatus=new RelayCommand(x=>
DispatcherHelper.CheckBeginInvokeOnUI(()=>
{
更新状态(x);
}));
来自中继命令的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);
}
private void UpdateStatus(UserStatusVM状态)
{
var userStatusEventId=\u userService.CreateUserEvent(status.Id,CurrentUser.Id);
//这将返回我要发送的业务对象
//通过导线连接到其他视图模型
var userEvent=\u userService.GetUserEvent(userStatusEventId);
if(userEvent!=null)
{
senger.Default.Send(userEvent,“广播”);
}
//这些触发了一个集合更改事件
CurrentUser.StatusId=状态.Id;
CurrentUser.Status=Status.Name;
CurrentUser.UpdateDate=DateTime.Now;
CurrentUser.IsOnDuty=UserStatuses.IsOnDuty(status.Id);
}
以及其他视图模型中的消息接收:

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

如果确定userEvent不为null,请设置断点并检查消息是否真的已发送!为了清楚起见,我在工作流中为每个人都插入了断点。userEvent对象是!=无效的调用CurrentUser之后的所有变量也被调用。消息正在消失。您是否也确定在向其发送消息时创建了另一个视图模型?是的,只是为了绝对确保我在定位器中自动加载了所有视图模型。