1

から呼び出されたコールバックメソッドから更新されているWinFormにプログレスバーがありますCopyFileEx

問題は、プログレスバーが100%に達するまで更新されないことです。

プログレスバーのパーセンテージはバックグラウンドワーカーから更新され、すべてのファイルの合計バイト数と比較したコピーされたバイト数に基づいています。

バイト数を計算するための私のコードは次のとおりです(ここでは問題はないと思います)

CopyFileCallbackAction myCallback(FileInfo source, FileInfo destination, object state, long totalFileSize, long totalBytesTransferred)
{
    double dProgress = (totalBytesTransferred / byteCount) * 100.0;
    backupWorker.ReportProgress((int)dProgress);
    return CopyFileCallbackAction.Continue;
}

との値を含むメッセージボックスを表示し、自分で計算を行うtotalBytesTransferredbyteCount、正常に機能し(小数点以下の数値は切り捨てられます-にキャストされるためint)、パーセンテージが取得されます。

何らかの理由で、プログレスバーに渡されたときに機能しませんが、100%になるまで、すべてが1つになります。

何か案は?

4

1 に答える 1

9

あなたは整数(実際にはlong)除算を行っています。これは。を返します0

1つのオペランドをにキャストする必要がありますdouble

于 2012-12-28T17:55:04.590 に答える