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

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

        TimeSpan interval = DateTime.Now - lastUpdateTime;

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

        lastUpdateDownloadedSize = DownloadedSize + cachedSize;
        lastUpdateTime = DateTime.Now;

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

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

5
задан marko 8 May 2012 в 23:17
поделиться