在我的下載管理器應用程序,我使用下面的代碼來計算當前的傳輸速率:計算電流(不平均)的下載速度
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)不感興趣,因爲它沒有給出真實的結果。
您應該使用DateTime.UtcNow而不是DateTime.Now,它每年不會更改兩次。 – spender
您的計算是否有效抵消了「DownloadedSize/interval.TotalSeconds」? – spender
在微積分書或在線查找瞬時變化率。 –