WinSCP更新C#进度条
WinSCP update C# progress bar
在使用 C# 中的 WinSCP .NET 程序集触发 FileTransferProgressEventArgs
事件时,我无法了解发送文件的百分比。
FileProgress
returns 只有 0
或 1
,或者文档说的 (0-1) 我不明白。我需要知道发送了多少字节的文件,但不是我不明白的 0,1。我知道 CPS 是每秒字节数,但我需要更多变量。
我增加进度条的方法如下 void
SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e)
{
progressBar.Increment((int)e.FileProgress);
}
它的 e.FileProgress
和 e.CPS
我认为可以提供帮助,但似乎我遗漏了什么。
问题是,您将 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。
在使用 C# 中的 WinSCP .NET 程序集触发 FileTransferProgressEventArgs
事件时,我无法了解发送文件的百分比。
FileProgress
returns 只有 0
或 1
,或者文档说的 (0-1) 我不明白。我需要知道发送了多少字节的文件,但不是我不明白的 0,1。我知道 CPS 是每秒字节数,但我需要更多变量。
我增加进度条的方法如下 void
SessionFileTransferProgress(object sender, FileTransferProgressEventArgs e)
{
progressBar.Increment((int)e.FileProgress);
}
它的 e.FileProgress
和 e.CPS
我认为可以提供帮助,但似乎我遗漏了什么。
问题是,您将 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。