私のリアクティブ エクステンション スキルは弱く、薄く引き伸ばされています。状況は次のとおりです。
私のMVVMには、XamlリストボックスにバインドするObservableCollectionがあります。それは普通のことです。
public ObservableCollection<IExtractedFileInfo> ExtractedFileInfoList
私のビジネス層には、EntityFramework をクエリし、次のような署名で呼び出される長時間実行されるプロセスがあります。
IList<IExtractedFileInfo> ExtractedFileInfoListFetch(string location)
結果をリストボックスに渡すための私の通常の解決策は、長時間実行されているプロセスから出力を取得し、新しい ObservableCollection を作成し、このように MVVM のプロパティと等しく設定することです。
var extractedFileInfoList = _businessFacade.ExtractedFileInfoListFetch(location);
ExtractedFileInfoList = new ObservableCollection<IExtractedFileInfo>(extractedFileInfoList);
もちろん、これにより、結果のリスト全体がプロセスの最後に Xaml リストボックスに取り込まれます。ReactiveExtensions が各 IExtractedFileInfo オブジェクトをプルすると、Xaml リストボックスがいっぱいになるように、このプロセスを実装したいと思います。このプロセスを調整する方法の例が見つかりません。レイヤー間の分離と、ReactiveExtension を使用してレイヤーを連携させる方法に混乱しています。ビジネス層でクエリを記述できると思いますが、結果を MVVM に転送してディスプレイ スレッドに表示するにはどうすればよいですか? ObservableCollection プロパティを MVVM からビジネス レイヤーに渡して、そこに入力する必要がありますか? または、すべてのクエリを MVVM にプルアップし、そこからプロセス全体を実行しますか? ご覧の通り3度目の下りです。