Задать вопрос

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

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

Хочется сделать прогресс-бар для этого процесса, но есть подводный камень. Задачи запускаются через Parallel.ForEach и рапортуют о прогрессе следующим образом: с указанной частотой вызывают делегат Progress(object writer, long inputBytes, long outputBytes, bool finished), который сообщает количество обработанных байт (inputBytes). В случае одной задачи все просто, общий размер файла делим на этот вот inputBytes и умножаем на 100. Если файлов обрабатывается несколько, их общий размер посчитать просто, а вот колличество обработаных байт я посчитать не понимаю как. Ведь inputBytes все время равно полному числу обработанных байт, а не числу байт, обработанных с последнего возникновения события, и при сложении получаются неверные числа. Надеюсь, смог объяснить понятно.
  • Вопрос задан
  • 259 просмотров
Подписаться 2 Простой 7 комментариев
Помогут разобраться в теме Все курсы
  • Stepik
    Профессия "C# разработчик"
    1 неделя
    Далее
  • XYZ School
    C# для разработки игр
    5 месяцев
    Далее
  • Учебный центр IBS
    DEV-001_NET Шаблоны проектирования GoF. Редакция для .NET
    1 неделя
    Далее
Пригласить эксперта
Ответы на вопрос 1
Griboks
@Griboks Куратор тега C#
Рапортуйте не количество байт, а прогресс по файлу. Отображайте как сумму прогрессов всех файлов, делённую на их количество.
Ответ написан
Ваш ответ на вопрос

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

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