如何通过另一个项目中的类更新backGroundWorker.ReportProgress()?

时间:2014-02-05 12:31:29

标签: c# winforms c#-4.0

我从DataBase读取了包含数据的 .text 文件,然后在经过一些处理后上传到另一个数据库。

此过程遵循以下模式:

View 项目中,我选择文件并将其路径trought参数传递给 Controller 项目,该项目调用 Model 项目,谁执行所有进程和格式化,然后调用 DataAccess 项目进行保存。 ( Model 项目调用 DataAccess 项目。)

在表格中,在视图中,我有一个BackGroundWOrker组件,其中DO_Work事件调用Controller,以启动上面的过程。

我也有一个ProgressBar,它通过BackGroundWorker.ReportProgress()函数更新。

那么,我怎样才能告诉BackGroundWorker在我保存在数据库中的每个注册表中进度都在增加?

1 个答案:

答案 0 :(得分:0)

有很多方法可以做到这一点,具体取决于你想要容忍的耦合程度。

  1. View可以将对BackgroundWorker的引用传递给Controller。 Controller定期调用BackgroundWorker的ReportProgress方法。

  2. View将对抽象接口(例如IProgressReporter)的引用传递给Controller。 Controller定期调用IProgressReporter.ReportProgress,View将其连接到BackgroundWorker。

  3. Controller会公开一个定期触发的事件来报告进度。 View处理此事件并调用BackgroundWorker的ReportProgress方法。