Backgroundworker - 数据绑定 - 查看更新

时间:2011-08-30 20:35:57

标签: c# winforms mvvm viewmodel backgroundworker

我需要选择批量数据(百万行),然后更新数据库表。现在,我正在按BackgroundWorker中的块读取数据块(因为MSDN中指定的用法)

我有一个实现ViewModel的{​​{1}}类,并且所有公共属性都通过INotifyPropertyChanged组件绑定到GUI - 经典的WinForms方式:

问题是我的所有逻辑都在一个BindingSource类中。如何以更好的方式隔离我的逻辑?数据获取和更新逻辑位于ViewModel方法的循环中,它通过DoWork()的{​​{1}}方法向UI发出信号。

编辑 - 除了进度之外,我不必在GUI上显示任何类型的数据。它只是一次性工具。建议?

  

编辑 - 解决方案 -   http://www.codeproject.com/KB/architecture/MVPVMWindowsForms.aspx

2 个答案:

答案 0 :(得分:1)

将所有BackgroundWorker逻辑移动到Model类中,并使其以异步方式执行。提供用于在新记录可用时通知ViewModel的事件。

通常,您的ViewModel不应该对线程有太多了解(除此之外可能还有Dispatcher.Invoke)。 ViewModel应仅接受来自View的输入,调用Model,然后使用INotifyPropertyChanged更新View。 ViewModel中不应存在太多逻辑。

你可能也想使用ObservableCollection,但听起来你还没有那么远。

答案 1 :(得分:1)