2011-10-22 59 views
5

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

回答

5

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

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

3

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

public void ReportProgress(
    int percentProgress, 
    Object userState 
) 

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