Obliczanie bieżącej (nie średniej) prędkości pobierania

W mojej aplikacji menedżera pobierania używam poniższego kodu do obliczenia bieżącej szybkości transferu:

<code>        TimeSpan interval = DateTime.Now - lastUpdateTime;

        downloadSpeed = (int)Math.Floor((double)(DownloadedSize + cachedSize - lastUpdateDownloadedSize) / interval.TotalSeconds);

        lastUpdateDownloadedSize = DownloadedSize + cachedSize;
        lastUpdateTime = DateTime.Now;
</code>

Działa to głównie tak, jak chcę (aktualizuję prędkość co około 4 sekundy), ale zawsze występują pewne szalone skoki w szybkości pobierania, ponieważ zmienia się. Moja średnia prędkość pobierania wynosi około 600 kB / s, a czasami pokazuje 10,25 MB / s, a nawet ujemne wartości, takie jak -2093848 B / s. Jak to możliwe?

Jak najlepiej obliczyć szybkość pobierania w czasie rzeczywistym? Nie interesuje mnie średnia stopa (DownloadedSize / TimeElapsed.TotalSeconds), ponieważ nie daje ona realistycznych wyników.

questionAnswers(1)

yourAnswerToTheQuestion