java web 限下载速,WebClient DownloadDataAsync当前下载速度

我正在尝试获取WebClient下载文件的当前下载速度,但是当我使用我非常确定应该解决的公式时:

Stopwatch.Stop();

double msElapsed = Stopwatch.Elapsed.TotalMilliseconds;

int bytesDownloaded = (int)e.BytesReceived - lastBytesDownloaded;

double downloadSpeed = (double)bytesDownloaded / (msElapsed / 1000);

lastBytesDownloaded = (int)e.BytesReceived;

Stopwatch.Restart();

其中秒表是我在启动文件下载时启动的秒表,lastBytesDownloaded是一个类变量,这都在downloadProgressChanged事件中,但是下载速度与实际情况相差很大 .

例如,如果我以500kb / s的速度下载文件,它将迅速从(例如)10kb / s快速地随机跳转到50mb / s .

通过对其进行一些编辑,我可以获得准确的平均下载时间:

double sElapsed = Stopwatch.Elapsed.TotalSeconds;

int bytesDownloaded = (int)e.BytesReceived;

double downloadSpeed = bytesDownloaded / sElapsed;

但这不是我想要的 . 如何获得更稳定的当前下载速度读数?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值