static void SaveAndSendTicks(ITicksContainer containerTicks, IHistoricalTicksRepository repository) { long start = DateTime.Now.Ticks; //ITicksContainer _containerTicks = containerTicks; Dictionary <string, LatestSymbolTick> dictToSend = new Dictionary <string, LatestSymbolTick>(); ITicksContainer containerLatestTicks = new TicksDataTableContainer(); foreach (KeyValuePair <string, MessageTick> tick in symbolsCacheBid) { containerLatestTicks.AddEntry(tick.Value.Symbol, (int)tick.Value.Value, tick.Value.DecimalValue, tick.Value.DateTime, (byte)tick.Value.TickType, tick.Value.Provider); LatestSymbolTick latestSymbolTick = new LatestSymbolTick { Symbol = tick.Value.Symbol, BidValue = tick.Value.DecimalValue, Timestamp = tick.Value.DateTime }; dictToSend.Add(latestSymbolTick.Symbol, latestSymbolTick); } foreach (KeyValuePair <string, MessageTick> tick in symbolsCacheAsc) { containerLatestTicks.AddEntry(tick.Value.Symbol, (int)tick.Value.Value, tick.Value.DecimalValue, tick.Value.DateTime, (byte)tick.Value.TickType, tick.Value.Provider); } symbolsCacheBid.Clear(); symbolsCacheAsc.Clear(); double msPrepare = TimeSpan.FromTicks(DateTime.Now.Ticks - start).TotalMilliseconds; start = DateTime.Now.Ticks; Int32 totalTickCount = containerTicks.Count(); repository.TicksInsert(containerLatestTicks, containerTicks); double msInsert = TimeSpan.FromTicks(DateTime.Now.Ticks - start).TotalMilliseconds; containerLatestTicks = null; if (HSTickWriter.provider != null) { HSTickWriter.provider.ProvideLatestSymbols(dictToSend); } Console.WriteLine("Saved in " + DateTime.Now.Date.ToShortDateString() + ", " + DateTime.Now.ToLongTimeString() + "; prepare: " + msPrepare.ToString() + "; ïnsert:" + msInsert.ToString() + "; count: " + totalTickCount.ToString()); }
public void TicksInsert(ITicksContainer latestTicks, ITicksContainer ticks) { using (SqlConnection conn = new SqlConnection(ConnString)) { SqlCommand cmd = new SqlCommand("spTicksInsert", conn); cmd.CommandType = CommandType.StoredProcedure; SqlParameter p = cmd.Parameters.AddWithValue("@LatestSymbolTicks", ((TicksDataTableContainer)latestTicks).ToDataTable()); p.SqlDbType = SqlDbType.Structured; p.TypeName = "LatestSymbolTicksType"; SqlParameter p2 = cmd.Parameters.AddWithValue("@Ticks", ((TicksDataTableContainer)ticks).ToDataTable()); p2.SqlDbType = SqlDbType.Structured; p2.TypeName = "TicksType"; conn.Open(); cmd.ExecuteNonQuery(); } }