Как правильно сделать прогресс-бар для нескольких задач?

Расклад такой: необходимо пережать папку с аудиофайлами в другой формат (flac → mp3).

Хочется сделать прогресс-бар для этого процесса, но есть подводный камень. Задачи запускаются через Parallel.ForEach и рапортуют о прогрессе следующим образом: с указанной частотой вызывают делегат Progress(object writer, long inputBytes, long outputBytes, bool finished), который сообщает количество обработанных байт (inputBytes). В случае одной задачи все просто, общий размер файла делим на этот вот inputBytes и умножаем на 100. Если файлов обрабатывается несколько, их общий размер посчитать просто, а вот колличество обработаных байт я посчитать не понимаю как. Ведь inputBytes все время равно полному числу обработанных байт, а не числу байт, обработанных с последнего возникновения события, и при сложении получаются неверные числа. Надеюсь, смог объяснить понятно.
  • Вопрос задан
  • 235 просмотров
Пригласить эксперта
Ответы на вопрос 1
Griboks
@Griboks Куратор тега C#
Рапортуйте не количество байт, а прогресс по файлу. Отображайте как сумму прогрессов всех файлов, делённую на их количество.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы