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 の読み込みが完了したことを知る方法はありませんか?