private void StoreResults(TimeRange timeRange, OhlcData results) { var clone = new OhlcData(results); // ienumerable modifications during storage process. if (timeRange.TimeResolution != TimeResolution.Day) { clone.RemoveAll(x => x.DateTimeUtc.IsLive(timeRange.TimeResolution)); } ThreadPool.QueueUserWorkItem(delegate { lock (_storageLock) Parallel.ForEach(StorageAdapters, a => a.StoreRange(clone, timeRange)); }); }