在我的下载管理器应用程序中,我使用下面的代码来计算当前的传输速率:
TimeSpan interval = DateTime.Now - lastUpdateTime;
downloadSpeed = (int)Math.Floor((double)(DownloadedSize + cachedSize - lastUpdateDownloadedSize) / interval.TotalSeconds);
lastUpdateDownloadedSize = DownloadedSize + cachedSize;
lastUpdateTime = DateTime.Now;
这主要以我想要的方式工作(我每 4 秒左右更新一次速度),但是随着下载率的波动,总会出现一些疯狂的峰值。我的平均下载速度约为 600 kB/s,有时会显示 10.25 MB/s 甚至是负值,例如 -2093848 B/s。这怎么可能?
计算实时下载率的最佳方法是什么?我对平均速率(DownloadedSize / TimeElapsed.TotalSeconds)不感兴趣,因为它没有给出现实的结果。