static void Main() { #region 讀取設定 string xmlFile = string.Format(@"{0}\{1}.xml", Application.StartupPath, System.IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)); // 取得資料 if (System.IO.File.Exists(xmlFile)) { try { XmlAdapter xmlAdapter = null; // 資料庫 xmlAdapter = new XmlAdapter(xmlFile); xmlAdapter.GoToNode("XML", "Database"); // 設定 frmMain.SqlServer = xmlAdapter.ReadXmlNode("SqlServer"); frmMain.SqlDB = xmlAdapter.ReadXmlNode("DB"); frmMain.SqlUID = xmlAdapter.ReadXmlNode("UID"); frmMain.SqlPWD = xmlAdapter.ReadXmlNode("PWD"); // 伺服器 xmlAdapter = new XmlAdapter(xmlFile); xmlAdapter.GoToNode("XML", "Server"); // 設定 frmMain.ServerIp = xmlAdapter.ReadXmlNode("Ip"); frmMain.ServerPort = xmlAdapter.ReadXmlNode("Port"); } catch { } } #endregion Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain()); }
public frmMain() { InitializeComponent(); // 設定 this.Icon = Properties.Resources.Console; // 讀取設定檔 XmlAdapter xmlAdapter; // 設定 IP xmlAdapter = new XmlAdapter(CONFIG_FILE_PATH); xmlAdapter.GoToNode("XML", "Server"); this.tsptxbServerIp.Text = xmlAdapter.ReadXmlNode("Ip"); this.tsptxbServerPort.Text = xmlAdapter.ReadXmlNode("Port"); // 讀取執行程式清單 xmlAdapter = new XmlAdapter(CONFIG_FILE_PATH); xmlAdapter.GoToNode("XML", "Processes"); // 建立執行程式 try { this.ProcessList = xmlAdapter.GetAllSubNodes("Process", "Name", "Path", "Command", "Description", "Default"); }catch { MessageBox.Show(this, "載入Process設定檔失敗。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); // 寫入記錄 ServerWork.Error("載入Process設定檔失敗"); Application.Exit(); } // 多跟分來源的當前來源 this.CurProcessType = new Dictionary<string, string>(); this.CurProcessTime = new Dictionary<string, string>(); //設定預設值 KEY統一大寫 foreach (var process in this.ProcessList) { if (process["Default"] == "true") { string key = process["Name"].Replace("(", "").Replace(")", "").ToUpper(); if (key.IndexOf("-") != -1) key = key.Substring(0, key.IndexOf("-")); this.CurProcessType.Add(key, process["Name"]); } } logClear = new LogClear(); Task.Factory.StartNew(() => logClear.Work(), TaskCreationOptions.LongRunning); }
static void Main(string[] args) { bool startToFollow = false; ESport sport = ESport.None; DateTime gameDate = DateTime.Now.AddDays(-100); #region 讀取參數 string sGameDate = null; foreach (string cmd in args) { if (cmd.ToLower() == "follow") startToFollow = true; if (cmd.IndexOf("_") != -1)//有找到特殊的時間參數格式 yyyy/MM/dd_hh:mm sGameDate = cmd.Replace("_", " ");//還原時間格式 else sport = GetSportType(cmd); } if (!string.IsNullOrEmpty(sGameDate))//時間參數不為空 DateTime.TryParse(sGameDate, out gameDate); #endregion #region 讀取設定 string xmlFile = string.Format(@"{0}\{1}.xml", Application.StartupPath, System.IO.Path.GetFileNameWithoutExtension(Application.ExecutablePath)); // 取得資料 if (System.IO.File.Exists(xmlFile)) { try { XmlAdapter xmlAdapter = new XmlAdapter(xmlFile); xmlAdapter.GoToNode("XML", "Database"); // 設定 frmMain.SqlServer = xmlAdapter.ReadXmlNode("SqlServer"); frmMain.SqlDB = xmlAdapter.ReadXmlNode("DB"); frmMain.SqlUID = xmlAdapter.ReadXmlNode("UID"); frmMain.SqlPWD = xmlAdapter.ReadXmlNode("PWD"); bool tmpBool = true; if (bool.TryParse(xmlAdapter.ReadXmlNode("WRITE"), out tmpBool))//是否寫入DB frmMain.WRITE = tmpBool; else frmMain.WRITE = true; //讀取墨西哥棒球 冬季賽季 xmlAdapter = new XmlAdapter(xmlFile); xmlAdapter.GoToNode("XML", "BBLMP"); frmMain.bblmp_season = xmlAdapter.ReadXmlNode("season"); //读取日本篮球帐号密码 xmlAdapter = new XmlAdapter(xmlFile); xmlAdapter.GoToNode("XML", "BKBJ"); frmMain.bkbj_user = xmlAdapter.ReadXmlNode("user"); frmMain.bkbj_pwd = xmlAdapter.ReadXmlNode("pwd"); //读取使用代理设定的秒数 xmlAdapter = new XmlAdapter(xmlFile); xmlAdapter.GoToNode("XML", "ProxySettings"); frmMain.UseProxy = Convert.ToInt32(xmlAdapter.ReadXmlNode("UseProxySeconds")); // WKBL //xmlAdapter = new XmlAdapter(xmlFile); //xmlAdapter.GoToNode("XML", "WKBL"); //Sports.BkWKBL.Proxy = xmlAdapter.ReadXmlNode("Proxy"); } catch { } } #endregion Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new frmMain(startToFollow, sport, gameDate)); }
// 接收到資料 private static void ProcessData(string msg, Socket handler) { try { // 讀取設定 XmlAdapter xmlAdapter = new XmlAdapter(msg, true); string cmd = xmlAdapter.ReadXmlNode("Command"); string name = xmlAdapter.ReadXmlNode("Process"); string date = xmlAdapter.ReadXmlNode("Date"); string curkey = ""; bool isNotSameDate = false;//開賽時間不同 DateTime gameTime = DateTime.Now; //設定當前指定跟分的索引 curkey = name.Replace("(", "").Replace(")", "").ToUpper(); if (formMain.CurProcessType.ContainsKey(curkey)) name = formMain.CurProcessType[curkey];//ex:將(MLB) 指定成(MLB-ESPN) if (curkey.IndexOf("-") != -1) curkey = curkey.Substring(0, curkey.IndexOf("-")); if (string.IsNullOrEmpty(date))//若無使定開賽時間則取緩存 { if (formMain.CurProcessTime.ContainsKey(curkey)) date = formMain.CurProcessTime[curkey];//取得當前比賽的指定時間 } else { if (DateTime.TryParse(date, out gameTime)) { if (formMain.CurProcessTime.ContainsKey(curkey) == false || //指定開賽時間不存在 (formMain.CurProcessTime.ContainsKey(curkey) && gameTime > DateTime.Parse(formMain.CurProcessTime[curkey])))//新的開賽時間與舊開賽時間比舊的開賽時間較新 { isNotSameDate = true; formMain.CurProcessTime[curkey] = date;//設定當前比賽的指定時間 } } } // 判斷命令 if (cmd == "open") { // 執行程式清單 foreach (Dictionary<string, string> process in formMain.ProcessList) { if (process["Name"] == name)//多來源的當前指定來源 { formMain.CheckTypeProcess(process); process.OpenProcess(gameTime.ToString("yyyy/MM/dd_HH:mm"));//日期合法代入日期參數 } } } else if (cmd == "kill") { // 執行程式清單 foreach (Dictionary<string, string> process in formMain.ProcessList) { if (process["Name"].ToUpper().IndexOf(curkey) == 1)//模糊比對 ex: (Football) <-> FOOTBALL { // 關閉程式 process.KillProcess(); } } } else if (cmd == "run")//只有Monitor會送出此請求 { // 執行程式清單 foreach (Dictionary<string, string> process in formMain.ProcessList) { if (process["Name"] == name) { // 找到程式但開賽時間不同 if (process.FindProcess()) { if (isNotSameDate == true) { process.KillProcess(); process.OpenProcess(gameTime.ToString("yyyy/MM/dd_HH:mm"));//日期合法代入日期參數 } } else// 沒有找到程式 直接開啟 process.OpenProcess(gameTime.ToString("yyyy/MM/dd_HH:mm"));//日期合法代入日期參數 } } } //更新介面狀態 formMain.UpdateStatus(); } catch (Exception ex) { StringBuilder sb = new StringBuilder(); sb.AppendLine("ProcessData Error!!"); sb.AppendLine("msg: " + msg); sb.AppendLine("Message: " + ex.Message); sb.AppendLine("StackTrace:"); sb.AppendLine(ex.StackTrace); ServerError.Error(sb.ToString()); } }