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.