private void AddItem(SpeedItem speedItem) { lock (_lockObject) { _speedItems.Insert(0, speedItem); CleanUpSpeedItems(); } }
/// <summary> /// Report a download progress /// </summary> /// <param name="time">The current time when this took place</param> /// <param name="totalBytes">The total number of bytes that are transferred</param> /// <param name="bytesReceived">The total number of bytes received so far</param> public void ReportProgress(DateTime time, long totalBytes, long bytesReceived) { _totalBytes = totalBytes; var bytes = bytesReceived - _lastByteCount; var duration = time - _lastProgressEvent; var speed = new SpeedItem(bytes, duration); AddItem(speed); _lastByteCount = bytesReceived; _lastProgressEvent = time; CalculateSpeed(); }