2 Progress Bars для загрузки нескольких файлов

67
8

На данный момент у меня есть система очередей, которая помещает все ссылки для загрузки файлов и загружает их по одному.

То, что я пытался сделать, это не 1, а 2 бара прогресса. Верхний индикатор выполнения будет для прогресса текущего файла, а следующий ниже будет для общего прогресса, прежде чем все файлы будут загружены.

Я попытался придумать, как это сделать, но я не могу понять, как я буду заниматься этим.

Я пробовал это:

If Me.fileUrls.Count = 1 Then
CProgressBarTotal.Value = Help.ProgPercent.Text
Else
CProgressBarTotal.Value = Help.ProgPercent.Text / Me.fileUrls.Count
End If

И я понял, что это не сработает. Я также пытался подумать о других способах этого, но я ничего не мог придумать.

Кто-нибудь знает, как я смогу это сделать? Благодарю.

спросил(а) 2013-09-09T19:34:00+04:00 6 лет, 10 месяцев назад
1
Решение
110

Вам не нужно использовать оператор if:

CProgressBarTotal.Value = (currentFileNumber / Me.fileUrls.Count + Help.ProgPercent.Text / 100 / Me.fileUrls.Count) * CProgressBarTotal.Maximum

ответил(а) 2013-09-09T22:11:00+04:00 6 лет, 10 месяцев назад
39

Чтобы иметь второй индикатор выполнения, который отслеживает загруженные байты:

Перед отображением экрана загрузки определите общее количество загружаемых байтов. Специфика здесь зависит от механизма загрузки, но большинство FTP и HTTP-серверов будут предоставлять размеры файлов. В тех случаях, когда они этого не делают, вам придется сделать разумную оценку. Сохраните это в доступной переменной-члене.

Создайте доступную переменную-члена для общего количества загруженных байтов. Привяжите это к той же подпрограмме, которая обновляет ход одного файла, так что каждая загрузка "tick" также накапливает поле "количество загруженных байтов" в дополнение к проценту текущего файла, как и сейчас.

Привяжите общее количество байтов к максимальному значению "общий процент". Свяжите байт, загруженный счетчиком, с положением индикатора выполнения.

Для дополнительных точек: Настройте привязки динамическим способом, чтобы, если файл добавлен в (или удален) из вашей очереди загрузки, общее количество байтов для загрузки подсчитывается в реальном времени, а индикатор выполнения сбрасывает прогресс соответственно,

ответил(а) 2013-09-09T20:15:00+04:00 6 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема