定期从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在模型本身?

定期从db更新数据并将更改推送到UI

合乎逻辑的做法是让两个线程运行。一个是主UI线程。第二个是DB线程。

DB线程将定期轮询数据库。如果模型被更改并且EVENT将被触发,则更新模型。

视图模型将订阅模型的EVENT。

当事件被触发时,视图模型将被更新,因此视图。

不要忘记在窗口关闭时取消订阅,以避免内存泄漏。

另一种方法是使用中介模式。