0

FileTransferProgressEventArgsC# で WinSCP .NET アセンブリを使用してイベントが発生した時点で送信されたファイルの割合を知るのに問題があります。

FileProgress返品のみ0または、またはドキュメントに (0-1) と記載されていますが、これ1は理解できません。送信されたファイルのバイト数を知る必要がありますが、理解できない0,1ではありません。CPS が 1 秒あたりのバイト数であることはわかっていますが、さらに変数が必要です。

プログレスバーをインクリメントする方法は次のとおりです。

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

それは私が助けることができるe.FileProgresse.CPS思ったが、私は何かが欠けているようだ.

4

1 に答える 1

1

問題は、 にキャストe.FileProgressすることintです。すでに述べたように、ドキュメントでは、 の値がe.FileProgress0 から 1 の範囲 (たとえば 0.55) であると指定されています。この値を整数にキャストすると、小数点以下の桁数がすべて失われます。したがって、結果の値は 0 になります。この問題を解決するには、100 を掛けてパーセンテージ値に変換e.FileProgressします。したがって、0 から 100 の範囲の値を取得します。したがって、次のようにイベント ハンドラーを実装できます。

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

MinimumプログレスバーのとMaximumプロパティがデフォルト値の 0 と 100 に設定されていることを確認する必要があります。

于 2015-04-22T05:44:36.183 に答える