WPFアプリケーションでは、UIスレッドとバックグラウンドスレッドの間でデータを同期する必要があります。
そのため、非同期でデータを取得し、UIに反映するためのObservableCollectionを実装します。
この記事では、その方法について説明します。
ObservableCollectionの非同期更新
WPFでは、UIへの変更はUIスレッドで行わなければなりません。しかし、非同期処理を行いつつUIを更新する必要がある場合、BindingOperations.EnableCollectionSynchronization
とlock文
を使うことで簡単に実現できます。
このクラスでは、LoadDataAsync
メソッド内で_pageMstRepository
から非同期にデータを取得し、lock
文を使用してUIスレッドで安全にObservableCollection
を更新しています。
ViewModelの使用例
最後に、これらのクラスをViewModelで使用する例を示します。
ViewModelでLoadDataAsync
メソッドを呼び出すことで、バックグラウンドでデータを非同期に読み込み、UIに反映できます。OnPropertyChanged
メソッドを使用して、PageMstCollection
プロパティの変更を通知します。
これで、非同期でデータを更新するObservableCollectionを作成し、WPFアプリケーションで使用する方法がわかりました。