public void ExecuteTask() { try { if ((ConfigurationManager.AppSettings["StockDataAllowance"] ?? "") != "TRUE") return; //log.WriteEntry("Start Stock 1 : " + index, EventLogEntryType.Information); var bfirstTime = true; Thread.Sleep((index - 1) * 1000); var sql = new SqlDb(); while (ServiceStarted) { try { //log.WriteEntry(index + "-start-", EventLogEntryType.Information); if (!bfirstTime) Thread.Sleep(interval); bfirstTime = false; //log.WriteEntry("Start Stock 2 : " + index, EventLogEntryType.Information); var sdt = sql.GetStockUpdate(); //log.WriteEntry("Start Stock 2 : " + index + " : " + sdt.Rows.Count, EventLogEntryType.Information); if (sdt.Rows.Count == 0) continue; var symbols = new List<string>(); foreach (DataRow sdr in sdt.Rows) { var ts = sdr["Symbol"].ToString().ToUpper(); if (symbols.Contains(ts)) continue; symbols.Add(ts); } foreach (var symbol in symbols) { //var symbol = sdt.Rows[0]["Symbol"].ToString().ToUpper(); var relobj = new List<string>(); var rellst = new List<string>(); var relutp = new List<string>(); var ids = ""; var success = true; //log.WriteEntry(symbol + Environment.NewLine, EventLogEntryType.Information); foreach (DataRow sdr in sdt.Rows) { if (symbol != sdr["Symbol"].ToString().ToUpper()) continue; var related = sdr["RelatedObject"].ToString().ToUpper().Split(','); var updateType = sdr["UpdateType"].ToString().ToUpper(); foreach (var s in related) { if (!relobj.Contains(s)) relobj.Add(s); if (!s.StartsWith("S")) //nếu là danh sách { if (!rellst.Contains(s)) { rellst.Add(s); relutp.Add(updateType); } //if (!UpdateList(symbol, s, updateType)) success = false; } } ids += sdr["UpdateId"].ToString() + ","; } //log.WriteEntry(ids + "-" + success + "-" + relobj.Count, EventLogEntryType.Information); sql.OpenDb(); if (relobj.Count > 0) //update mã { //log.WriteEntry("Update stock - " + symbol + "-" + relobj[0], EventLogEntryType.Information); if (!UpdateStock(symbol, relobj, ref sql)) success = false; } for (var i = 0; i < rellst.Count; i++) { if (!UpdateList(symbol, rellst[i], relutp[i], ref sql)) success = false; } //log.WriteEntry("Start Stock 3 : " + index + " : " + symbol + " : " + ids, EventLogEntryType.Information); if (success && !string.IsNullOrEmpty(ids)) { sql.UpdateStockMonitor(ids); } sql.CloseDb(); } } catch (Exception ex) { log.WriteEntry(ex.ToString(), EventLogEntryType.Error); } } } catch (Exception ex) { log.WriteEntry(ex.ToString(), EventLogEntryType.Error); } finally { Thread.CurrentThread.Abort(); } }