1

我的 winform 上有一个进度条,该进度条正在从调用 from 的回调方法更新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;
}

totalBytesTransferred如果我显示一个带有and值的消息框byteCount,并自己进行计算,它工作正常(截断小数点后的任何数字 - 因为它被转换为 an int)并且我得到百分比。

出于某种原因,尽管当它传递到我的进度条时它不起作用,直到它达到 100%,然后它会合而为一。

有任何想法吗?

4

1 回答 1

9

你正在做整数(实际上long)除法,它返回0.

您需要将一个操作数转换为double.

于 2012-12-28T17:55:04.590 回答