Calculando a velocidade de download atual (não média)
No meu aplicativo gerenciador de downloads, estou usando o código abaixo para calcular a taxa de transferência atual:
<code> TimeSpan interval = DateTime.Now - lastUpdateTime; downloadSpeed = (int)Math.Floor((double)(DownloadedSize + cachedSize - lastUpdateDownloadedSize) / interval.TotalSeconds); lastUpdateDownloadedSize = DownloadedSize + cachedSize; lastUpdateTime = DateTime.Now; </code>
Isso funciona principalmente do jeito que eu quero (eu estou atualizando a velocidade a cada 4 segundos ou mais), mas sempre há alguns picos loucos na taxa de download, uma vez que flutua. Minha velocidade média de download é de cerca de 600 kB / s, e às vezes mostra 10,25 MB / s ou até valores negativos como -2093848 B / s. Como isso poderia ser?
Qual é a melhor maneira de calcular a taxa de download em tempo real? Eu não estou interessado na taxa média (DownloadedSize / TimeElapsed.TotalSeconds), porque não dá resultados realistas.