我正在从事winforms项目。我正在实现MVP架构。我在演示者上正在运行一些处理密集型工作(从文件系统读取数据并向数据库执行批量插入)。我想在后台线程中执行这些操作,而无需锁定UI并更新视图(进度条和datagridview)上的控件。

我是否应该只访问演示者中的backgroundworker对象并通过让视图事件处理程序触发演示者正在收听的事件来处理演示者中的事件?

例如:

在视图中:

private void backgroundWorker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
        {
            if (WorkerProgressChange != null)
        {
            WorkerProgressChange(this, EventArgs.Empty);
        }
    }


在演示者中:

_view.WorkerProgressChange += UpdateView;


这看起来合理吗?有人可以提供更好的模型吗?

谢谢!

最佳答案

演示者不应召集工作-添加另一个执行该工作的模型单元,并从控制器调用该工作(可以通过gui)。

(让视图引发由控制器处理的Work事件,该事件会召集后台工作人员并在更新/完成时调用视图)。

关于c# - 使用MVP架构的WinForms中BackGroundWorker的最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2349380/

10-09 21:40