我正在开发一个 winforms 项目。我正在实现 MVP 架构。我在演示器上运行一些处理密集型作业(从文件系统读取并对数据库执行批量插入)。我想在后台线程中执行这些操作,而无需锁定 UI 并更新 View (进度条和 datagridview)上的控件。
我是否应该访问演示者中的后台工作对象并通过让 View 事件处理程序触发演示者正在监听的事件来处理演示者中的事件?
例如:
在 View 中:
private void backgroundWorker_ProgressChanged(object sender, System.ComponentModel.ProgressChangedEventArgs e)
{
if (WorkerProgressChange != null)
{
WorkerProgressChange(this, EventArgs.Empty);
}
}
在演示者中:
_view.WorkerProgressChange += UpdateView;
这看起来合理吗?有人可以提供更好的模型吗?
谢谢!
最佳答案
演示者不应调用工作 - 添加另一个执行该工作的模型单元并从 Controller 调用该工作(可以通过 GUI)。
(让 View 引发一个工作事件,由 Controller 处理,该事件调用后台工作人员并在更新/完成时调用 View )。
关于c# - WinForms 中使用 MVP 架构的 BackGroundWorker 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2349380/