private void RefreshDataTimerTick(object sender, EventArgs e) { try { sync.EnterReadLock(); for (int i = Math.Max(lastRawDataIndex, rawData.Count - DataWindow); i < rawData.Count; i++) { ViewportData.Add(rawData[i]); } lastRawDataIndex = rawData.Count; while (ViewportData.Count > DataWindow) { ViewportData.RemoveAt(0); } } finally { sync.ExitReadLock(); } }