using ocean; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading; namespace demo.DbModule { public class Mes { Thread tRun; private static Mes _instance; private bool quit = false; public static Mes Instance { get { if (_instance == null) _instance = new Mes(); return _instance; } } private Mes() { tRun = new Thread(Run); } public void Quit() { quit = true; tRun.Join(); } private void Run() { DateTime prevReqTime = DateTime.Now; try { string msgurl = System.Configuration.ConfigurationManager.AppSettings["MesUrl"]; while (!quit) { if ((DateTime.Now - prevReqTime).TotalSeconds >= 10) { prevReqTime = DateTime.Now; //查询未上传的记录 string querySql = "select * from products where upstatus=0 and trynum<10"; DataTable dt = MySQLHelper.ExecuteDataTable(MySQLHelper.DBConnectionString, querySql); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow row in dt.Rows) { try { if (quit) break; string updateSql = "update products set upstatus={0},trynum=trynum+1,result=CONCAT(coalesce(result,''),',{1}') where id={2}"; int upstatus = 0; List reqList = new List(); RequestData rd = new RequestData(); rd.cBarCode = row["sn"] != null ? row["sn"].ToString() : ""; rd.cFileName = row["filename"].ToString(); rd.cMode = row["mode"] != null ? row["mode"].ToString() : ""; rd.cStatus = row["status"].ToString(); reqList.Add(rd); string resultjson = LFData.Post(msgurl, reqList.ToArray()); if (resultjson.ToUpper().IndexOf("SUCCESS") > 0) { upstatus = 1; } updateSql = string.Format(updateSql, upstatus, resultjson, row["id"]); MySQLHelper.ExecuteNonQuery(MySQLHelper.DBConnectionString, updateSql); } catch (Exception) { //log } } } } else { Thread.Sleep(100); } } } catch (Exception) { //log } } public void Start() { tRun.Start(); } } }