尝试查找到目前为止发送(上传)的字节数时出了什么问题

本文关键字:字节数 问题 什么 上传 查找 到目前为止 | 更新日期: 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。