2

Task オブジェクトを使用してバックグラウンド スレッドからバインドされたプロパティ (MVVM) を更新するプロジェクトに取り組んでいます。

    Task.Factory.StartNew(() =>
        {
            // 1. Update bound control to indicate that data is being loaded

            // 2. Perform long running call

            // 3. Display the loaded data in the bound control
        });

上記のコードは、私がやっていることの要点です。ここここで収集した情報から、ビュー モデルのプロパティをタスク スレッドから更新することは問題ではないことを理解しています。これには問題はありません。

私の質問は、タスクがステップ 2 を終了する前に、バインドされたコントロールを含むウィンドウが閉じられるとどうなりますか? エラーは発生せず、ステップ 3 にブレークポイントを設定しても、ウィンドウを閉じてもヒットしません。

4

1 に答える 1

1

View が破棄された後に ViewModel を更新しても問題はありません。バインディングは WPF によって壊れ、ビューは ViewModel に接続されなくなります。PropertyChanged イベントは見過ごされます。これが MVVM の優れた点です。VM レイヤーで作業するときに、ビューが何をしているかを気にする必要はありません。

于 2013-10-16T13:10:23.490 に答える