//Internal functions private void loadMktData(int barId, int barLength) { if (!_mktData.ContainsKey(barId)) { DataTable dt = _db.getHistoricalData(barId, Strategy.getExchangeTime(_currTime, _mktTimeZoneMap[barId]), Strategy.getLocalTime(_endDate, _mktTimeZoneMap[barId])); Bar[] bars = dt.Rows.Cast <DataRow>().Select(x => new Bar(barId, x)).Select(x => { x.time = x.time.AddSeconds(barLength); return(x); }).ToArray(); lock (_lock) { _mktData.Add(barId, bars); _currMktIndices.Add(barId, 0); _barIds = _currMktIndices.Keys.ToList(); _isDone.Add(barId, false); } } }