Silverlight应用程序的MVVMLight具有消息总线。视图模型可以在彼此之间发送消息,因此它们都可以解耦。我的问题是,发送消息是同步还是异步操作?
在以下代码中,主(协调)视图模型向所有子 VM 发送消息以加载数据。加载所有数据后,主 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 的代码执行完后才会执行?或者通过将标志IsAllChildViewModelsCompletedLoading设置为 true, PopulateData方法将退出更快,并且我们无法知道所有子 VM 都已通过使用上述方法完成加载?