Расчет процента прогресса - PullRequest
       0

Расчет процента прогресса

7 голосов
/ 19 сентября 2011

Как рассчитать процент файла, который загружается в цикле?

Например:

ProcessStartInfo p = new ProcessStartInfo();
Process process = Process.Start(p);
StreamReader sr = process.StandardOutput;
char[] buf = new char[256];
string line = string.Empty;
int count;

while ((count = sr.Read(buf, 0, 256)) > 0)
{
    line += new String(buf, 0, count);
    progressBar.Value = ???
}

`

Как мне это сделать? Заранее спасибо

1 Ответ

12 голосов
/ 19 сентября 2011

Вам нужно было бы знать ожидаемое количество выходных данных - в противном случае вы не сможете указать пропорцию выходных данных, которые уже были завершены.

Если вы знаете, что это будет определенныйразмер, вы можете использовать:

// *Don't* use string concatenation in a loop
StringBuilder builder = new StringBuilder();
int count;
while ((count = sr.Read(buf, 0, 256)) > 0)
{
    builder.Append(buf, 0, count);
    progressBar.Value = (100 * builder.Length) / totalSize;
}

Это предполагает, что индикатор выполнения с минимумом ноль и максимум 100 - это также предполагает, что общая длина меньше, чем int.MaxValue / 100. Другой подходпросто сделать максимальное значение индикатора выполнения общей длиной и установить значение индикатора выполнения на builder.Length.

Вам все равно нужно будет знать общую длину, прежде чем начать, иначе вы не сможетедать прогресс в пропорции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...