【发布时间】:2014-07-25 02:38:34
【问题描述】:
Silverlight 应用程序的MVVMLight 具有消息总线。视图模型可以在彼此之间发送消息,因此它们都可以解耦。我的问题是,发送消息是同步还是异步操作?
在以下代码中,主(协调)视图模型向所有子 VM 发送消息以加载数据。加载完所有数据后,Main VM 必须显示一个状态,说明所有数据已加载,该状态在变量 IsAllChildViewModelsCompletedLoading 中设置 .
MainVM.PopulateData()
{
IsAllChildViewModelsCompletedLoading = false; // Line 1
MessageBus.Send(new Child1VMMessage()); // Line 2
MessageBus.Send(new Child2VMMessage()); // Line 3
MessageBus.Send(new Child3VMMessage()); // Line 4
IsAllChildViewModelsCompletedLoading = true; // Line 5
}
在上面的代码中,第 3 行的 MessageBus.Send 是否等到第 2 行的 MessageBus.Send 完成。第 5 行的代码是不是只有在 2,3,4 的代码执行完后才会执行?或者 PopulateData 方法会通过将标志 IsAllChildViewModelsCompletedLoading 设置为 true 来更快地退出,并且我们无法知道使用上述方法完成所有子 VM 的加载?
【问题讨论】: