WinSCP обновление C# индикатор выполнения

У меня возникают проблемы с определением процента файла, отправленного в любой момент FileTransferProgressEventArgs событие запускается с помощью WinSCP .NET сборки в C#.

FileProgress только возвращается 0 или же 1или в документации сказано (0-1), что я не понимаю. Мне нужно знать, сколько байтов файла отправлено, но не 0,1, что я не понимаю. Я знаю, что CPS - это число байтов в секунду, но мне нужно больше переменных.

Метод, в котором я увеличиваю индикатор выполнения, показан ниже

SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e)
{
    progressBar.Increment((int)e.FileProgress);
} 

это e.FileProgress а также e.CPS что я думал, может помочь, но, кажется, я что-то упустил

1 ответ

Решение

Проблема в том, что вы бросили e.FileProgress в int, Как вы уже сказали, в документации указано, что значение e.FileProgress колеблется от 0 до 1, например 0,55. Если вы приведете это значение к целому числу, вы потеряете все десятичные знаки. Таким образом, полученное значение будет равно 0. Для решения этой проблемы вы можете преобразовать e.FileProgress в процентное значение, умножив его на 100. Таким образом, вы получите значения в диапазоне от 0 до 100. Таким образом, вы можете реализовать свой обработчик событий следующим образом:

void SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e) 
{
    progressBar.Value = (int)(e.FileProgress * 100);
}

Вы просто должны убедиться, что Minimum а также Maximum свойства вашего индикатора выполнения установлены в значения по умолчанию 0 и 100.

Другие вопросы по тегам