进度条不会更新,直到100%

时间:2012-12-28 17:51:53

标签: c# progress-bar

我的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值的消息框,并自己进行计算,则可以正常工作(截断小数点后的任何数字 - 因为它被强制转换为{{ 1}})我得到百分比。

出于某种原因虽然它在传递到我的进度条时不起作用,但直到它达到100%然后才能完成所有这一切。

有什么想法吗?

1 个答案:

答案 0 :(得分:9)

你正在进行整数(实际为long)除法,它返回0

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