尝试查找到目前为止发送(上传)的字节数时出了什么问题
本文关键字:字节数 问题 什么 上传 查找 到目前为止 | 更新日期: 2023-09-27 17:57:15
我有一个事件,我正在向后台工作者1 进度更改事件做进度报告:
mbSent = ((double)obj.BytesSent) / (1 << 20);
stringProgressReport[2] = mbSent.ToString();
backgroundWorker1.ReportProgress(0, 2);
mbSent 是一个全局双变量。stringProgressReport 是 string array var。我还有一个很长的var类型,称为totalBytes,这是我上传的文件大小。但我在这里没有使用这个变量,也许我应该这样做。
然后在后台工人进度更改事件中,我做了:
label5.Text = stringProgressReport[2];
问题出在 label5 中,我看到它只是像整数 1,2,3,4,5 一样计数......当它最终达到 25 时,我看到数字 25 变成 25.34543356767,而 totalBytes 大小是其他东西,它是 26.7898 或其他什么。
这有问题:mbSent = ((double)obj。字节发送)/(1 <<20);也许我需要以某种方式在这里起诉总字节(文件总大小)?
这就是我计算总字节数的方式:
long totalBytes = 0;
private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.InitialDirectory = "c:''";
openFileDialog1.Filter = "mp4 files (*.mp4)|*.mp4|All files (*.*)|*.*";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
FileNameToUpload = openFileDialog1.FileName;
FileName = openFileDialog1.FileName;
using (FileStream fileStream = File.OpenRead(FileName))
{
totalBytes = fileStream.Length;
}
}
}
你的计算没有错。 如果您不想在输出中看到任何小数,请不要将mbSent
转换为双精度数或在ToString()
调用中使用格式字符串。
也:
mbSent = obj.BytesSent / (1 << 20);
或:
stringProgressReport[2] = mbSent.ToString("D");
当totalBytes
为 26,789,800 时,mbSent 将是 25.45874420 是完全正确的。 20,789,800/1,048,576 = 25.45874420。