.net 多个线程加载连接到从数据库检索的不同集合集的不同网格
我有一个使用MVVM设计模式创建的wpf应用程序。在给定视图中,有5个网格都绑定到一组不同的集合,即5个集合对应5个网格。现在我不想在从数据库检索5组数据时挂断UI 请让我知道以下解决方案是否是一个好主意,否则请提出建议:.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
BeginInvoke
,每个代表在EndInvoke
上都有IEnumerable集合
IEnumerable集合
填充ObservableCollection
,以允许调度程序从UI线程更新UI,因为begininvoke将在线程池线程上工作您应该使用该组件来简化将工作移动到后台线程,然后同步回UI的过程。否则,您的一般方法听起来很简单。准备好将这些更新组合起来。如果你用大量的更新对UI进行重击,那么多线程处理也没关系。@威尔:是的,因为只有一个UI线程将消息管道排出队列:)@sll:也许在WinRT更新的两次迭代后,我们会得到多个friggen UI线程。该死的,COM!有趣的是,COM是如何卷入这起案件的?真的没有这么深的知识吗(多线程更新UI)这是有意义的,因为只有一个UI线程?Dispatcher.BeginInvoke是否可以执行长时间运行的数据库调用,从而使UI线程不会阻塞?更准确地说,对Dispatcher.BeginInvoke的5次调用是否会从线程池中产生5个线程??