私のダウンロードマネージャーアプリケーションでは、現在の転送速度を計算するために以下のコードを使用しています。
TimeSpan interval = DateTime.Now - lastUpdateTime;
downloadSpeed = (int)Math.Floor((double)(DownloadedSize + cachedSize - lastUpdateDownloadedSize) / interval.TotalSeconds);
lastUpdateDownloadedSize = DownloadedSize + cachedSize;
lastUpdateTime = DateTime.Now;
これはほとんど私が望むように機能しますが(私は4秒ごとに速度を更新しています)、変動するため、ダウンロード速度には常にいくつかのクレイジーなスパイクがあります。私の平均ダウンロード速度は約600kB/ sで、10.25 MB / s、または-2093848 B/sのような負の値を示すこともあります。これはどうやってできるの?
リアルタイムのダウンロード率を計算するための最良の方法は何ですか?平均レート(DownloadedSize / TimeElapsed.TotalSeconds)は現実的な結果が得られないため、興味がありません。