C#Backgroundworker报告2个进度条的进度?

时间:2011-10-22 06:14:29

标签: c# winforms backgroundworker

我正在处理几个大文件,我正在使用backgroundWorker1.ReportProgress(percent)报告每个文件完成时的进度。但现在我想要第二个进度条来报告每个文件正在处理时的进度(并重置下一个文件)。我可以使用我正在读取的当前字节位置并除以文件的总大小来获得百分比的进度。但是,如果只有一个ProgressChanged事件,如何将此值传递给progressBar2?

2 个答案:

答案 0 :(得分:5)

一种方法是使用BackgroundWorker.ReportProgress(Int32, Object)并在userState参数中传递您想要的任何内容。

另一个是简单地知道当你在第一个进度条上达到100%时,你需要增加另一个条。

答案 1 :(得分:3)

ReportProgress有overload,允许您传递额外的对象。您可以使用它来返回您需要的任何额外状态。

public void ReportProgress(
    int percentProgress,
    Object userState
)

然后,您可以从ProgressChangedEventArgs.UserState读取状态。