【问题标题】:Progress reporting from background task来自后台任务的进度报告
【发布时间】:2009-10-28 20:40:47
【问题描述】:

我有一个将文件导入数据库的后台任务。我希望用户查看当前正在发生的事情(收集文件/导入文件)、当前正在处理的文件以及任务的进展情况。我怎样才能以简单的方式做到这一点? Model和Controller之间的交互非常紧密,我几乎可以将导入代码放入窗口的代码文件中,直接更改进度条值等。你怎么看?你会如何解决这个问题?

【问题讨论】:

    标签: c# winforms model-view-controller multithreading


    【解决方案1】:

    使用BackgroundWorker,它非常适合这项任务。它可以使用ReportProgress方法通知UI当前进度,该方法在UI线程上引发ProgressChanged事件(这意味着您不必担心跨线程调用和Invoke

    【讨论】:

    • BackgroundWorker 是用于基本线程和报告的出色工具。 +1
    【解决方案2】:

    在很多情况下,进度条可能会产生误导,因此我建议您谨慎设定期望值。

    如果您最终以某种百分比的形式显示进度,请考虑根据文件大小的不同加载时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      相关资源
      最近更新 更多