gpt4 book ai didi

mvvm - MVVMLight消息总线单同步/异步

转载 作者:行者123 更新时间:2023-12-03 10:14:09 26 4
gpt4 key购买 nike

Silverlight 应用程序的 MVVMLight 具有消息总线。 View 模型可以在彼此之间发送消息,因此它们都可以解耦。我的问题是,发送消息是同步还是异步操作?

在以下代码中,主(协调) View 模型将消息发送到所有子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 完成。是否仅在执行2、3、4上的代码后才执行第5行上的代码?还是通过将标志 IsAllChildViewModelsCompletedLoading 设置为true来使 PopulateData 方法退出得更快,有没有办法知道使用上述方法完成所有子VM的加载?

最佳答案

经过一些调试后,我得出的结论是它们是同步的,并且不在不同的线程中运行,因此可以安全地调用第5行。

关于mvvm - MVVMLight消息总线单同步/异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17667583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com