Расчет текущей (не средней) скорости загрузки

В моем приложении для управления загрузкой я использую приведенный ниже код для расчета текущей скорости передачи:

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

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

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

В основном это работает так, как я хочу (я обновляю скорость каждые 4 секунды или около того), но всегда есть некоторые сумасшедшие всплески в скорости загрузки, когда она колеблется. Моя средняя скорость загрузки составляет около 600 кБ / с, а иногда она показывает 10,25 МБ / с или даже отрицательные значения, такие как -2093848 б / с. Как это могло произойти?

Каков наилучший способ рассчитать скорость загрузки в режиме реального времени? Меня не интересует средняя скорость (DownloadedSize / TimeElapsed.TotalSeconds), потому что она не дает реалистичных результатов.

Ответы на вопрос(1)

Ваш ответ на вопрос