定期从db更新数据并将更改推送到UI
本文关键字:UI db 更新 数据 | 更新日期: 2023-09-27 18:01:17
我想自动更新数据显示在我的应用程序的一部分,无论用户在做什么。
数据来自返回多行的查询,我循环使用查询的数据填充自定义对象的List<T>
。
然后视图被绑定到ViewModel中的一个属性,该属性在某种程度上与该列表相关,例如:
public int numFabricacionesEnCurso { get { return maquina.fabricacionesEnCurso.Where(fb => fb.idEstado == 1).Count(); } }
是maquina.fabricacionesEnCurso
,我上面提到的静态列表。
基本上我有两个问题:
自动更新的最佳方法是什么?创建另一个线程,一个后台工作线程…?我应该在哪里创建它们,这样它就不会绑定到某个特定的屏幕上?
我应该如何将更改推送到视图?我不能调用RaisePropertyChanged的VM属性从模型,因为它不知道VM。我应该使该列表属性和实现INotifyPropertyChanged在模型本身?
合乎逻辑的做法是让两个线程运行。一个是主UI线程。第二个是DB线程。
DB线程将定期轮询数据库。如果模型被更改并且EVENT将被触发,则更新模型。
视图模型将订阅模型的EVENT。
当事件被触发时,视图模型将被更新,因此视图。
不要忘记在窗口关闭时取消订阅,以避免内存泄漏。
另一种方法是使用中介模式。