//Call this method to update public void Update() { while (Empty == false) //Note - opportunity for efficiency... >:) { //step 1: Remove old data from the collections. lock (coinLock) { if (CurrentData != null && CurrentData.Count > 0) { //Step 1: Remove old data from the collections. CurrentData.TakeAndBreak(x => x.LastUpdate > DateTime.UtcNow.AddMinutes(-MinuteInterval)); //Step 2: Get new data from the database and add it to the collections. DataCalls.GetRecentCurrentData(Instrument.InstrumentID, MinuteInterval, CurrentDataIndex).ForEach(x => CurrentData.Add(x)); CurrentDataIndex = this.CurrentData.Max(x => x.CurrentID); } } lock (coinAggLock) { if (CurrentAggData != null && CurrentAggData.Count > 0) { CurrentAggData.TakeAndBreak(x => x.LastUpdate > DateTime.UtcNow.AddMinutes(-MinuteInterval)); DataCalls.GetRecentCurrentAggData(Instrument.InstrumentID, MinuteInterval, CurrentAggDataIndex).ForEach(x => CurrentAggData.Add(x)); CurrentAggDataIndex = this.CurrentAggData.Max(x => x.CurrentAggID); } } Thread.Sleep(50000); } }