我的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;
}
如果我显示一个带有totalBytesTransferred
和byteCount
值的消息框,并自己进行计算,则可以正常工作(截断小数点后的任何数字 - 因为它被强制转换为{{ 1}})我得到百分比。
出于某种原因虽然它在传递到我的进度条时不起作用,但直到它达到100%然后才能完成所有这一切。
有什么想法吗?
答案 0 :(得分:9)
你正在进行整数(实际为long
)除法,它返回0
。
您需要将一个操作数强制转换为double
。