.net 多个线程加载连接到从数据库检索的不同集合集的不同网格

.net 多个线程加载连接到从数据库检索的不同集合集的不同网格,.net,wpf,mvvm,delegates,dispatcher,.net,Wpf,Mvvm,Delegates,Dispatcher,我有一个使用MVVM设计模式创建的wpf应用程序。在给定视图中,有5个网格都绑定到一组不同的集合,即5个集合对应5个网格。现在我不想在从数据库检索5组数据时挂断UI 请让我知道以下解决方案是否是一个好主意,否则请提出建议: 5个用于绑定到网格的可观察集合 5个代表调用数据库操作的BeginInvoke,每个代表在EndInvoke上都有IEnumerable集合 委托oncomplete回调将从IEnumerable集合填充ObservableCollection,以允许调度程序从UI线程更新U

我有一个使用MVVM设计模式创建的wpf应用程序。在给定视图中,有5个网格都绑定到一组不同的集合,即5个集合对应5个网格。现在我不想在从数据库检索5组数据时挂断UI

请让我知道以下解决方案是否是一个好主意,否则请提出建议:

  • 5个用于绑定到网格的可观察集合
  • 5个代表调用数据库操作的
    BeginInvoke
    ,每个代表在
    EndInvoke
    上都有
    IEnumerable集合
  • 委托oncomplete回调将从
    IEnumerable集合
    填充
    ObservableCollection
    ,以允许调度程序从UI线程更新UI,因为begininvoke将在线程池线程上工作

  • 您应该使用该组件来简化将工作移动到后台线程,然后同步回UI的过程。否则,您的一般方法听起来很简单。

    准备好将这些更新组合起来。如果你用大量的更新对UI进行重击,那么多线程处理也没关系。@威尔:是的,因为只有一个UI线程将消息管道排出队列:)@sll:也许在WinRT更新的两次迭代后,我们会得到多个friggen UI线程。该死的,COM!有趣的是,COM是如何卷入这起案件的?真的没有这么深的知识吗(多线程更新UI)这是有意义的,因为只有一个UI线程?Dispatcher.BeginInvoke是否可以执行长时间运行的数据库调用,从而使UI线程不会阻塞?更准确地说,对Dispatcher.BeginInvoke的5次调用是否会从线程池中产生5个线程??