Расчет текущей (не средней) скорости загрузки
В моем приложении для управления загрузкой я использую приведенный ниже код для расчета текущей скорости передачи:
<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), потому что она не дает реалистичных результатов.