C # Backgroundworker сообщить о прогрессе для 2 индикаторов? - PullRequest
5 голосов
/ 22 октября 2011

У меня есть несколько больших файлов, которые я обрабатываю, и я использую backgroundWorker1.ReportProgress(percent), чтобы сообщить о ходе работы после завершения каждого файла.Но теперь я хочу иметь второй индикатор выполнения для отчета о ходе выполнения каждого отдельного файла по мере его обработки (и сброса для следующего файла).Я могу использовать текущую позицию байта, из которой я читаю, и разделить на общий размер файла, чтобы получить прогресс в процентах.Но как передать это значение progressBar2, если есть только одно событие ProgressChanged?

Ответы [ 2 ]

5 голосов
/ 22 октября 2011

Один из способов - использовать BackgroundWorker.ReportProgress (Int32, Object) и передавать все, что вы хотите, в параметре userState.

Другой способ - просто знать, что, когда вы достигли 100% на первом индикаторе прогресса, вам нужно увеличить другой бар.

3 голосов
/ 22 октября 2011

ReportProgress имеет перегрузку , которая позволяет передавать дополнительный объект.Вы можете использовать это для возврата любого необходимого вам дополнительного состояния.

public void ReportProgress(
    int percentProgress,
    Object userState
)

Затем вы можете прочитать состояние из ProgressChangedEventArgs.UserState.

...