/// <summary> /// 初始化服务的工作线程 /// </summary> protected void Init() { while (true) { bool t = false; try { if (!string.IsNullOrEmpty(EnterpriseID)) { TableSyn[] ts = null; try { ts = GetTableList(); t = true; } catch (Exception ex) { t = false; WriteLog("异常 : " + ex.ToString() + ""); } if (ts != null) { mt = new MyTimer[ts.Length]; for (int i = 0; i < ts.Length; i++) { mt[i] = new MyTimer(); mt[i].i = i; mt[i].Interval = ts[i].interval; mt[i].Elapsed += new System.Timers.ElapsedEventHandler(timer1_Tick); mt[i].AutoReset = true; mt[i].Enabled = true; mt[i].ts = ts[i]; } WriteLog(ServiceName + " 服务配置成功"); } } else { //未配置服务 WriteLog("未配置服务 "); } } catch (Exception ex) { WriteLog("异常 : " + ex.ToString() + ""); } if (t) { break; } System.Threading.Thread.Sleep(1000); } }
private void timer1_Tick(object sender, EventArgs e) { MyTimer mt = sender as MyTimer; if (!this.mt[mt.i].locked) { DateTime startTime = DateTime.Now; this.mt[mt.i].Stop(); this.mt[mt.i].locked = true; try { SynFromServiceReference.synFromService1SoapClient bll = new SynFromServiceReference.synFromService1SoapClient(); string tsColumns = bll.GetDataColumn(mt.ts, key);//取得表的字段配置 //WriteLog("同步" + mt.ts.TableName + "(开始取数据: " + tsColumns + ")"); if (!string.IsNullOrEmpty(tsColumns)) { DataSet ds = new DataSet(); DbHelperSQL db = new DbHelperSQL(); if (!string.IsNullOrEmpty(mt.ts.sql)) { ds = db.GetDS(mt.ts.sql); //WriteLog("同步" + mt.ts.TableName + "(取数据成功)"); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { #region 检查字段 List <string> err = new List <string>(); List <string> err2 = new List <string>(); var ts = tsColumns.Split('|'); foreach (var item in ts) { if (!ds.Tables[0].Columns.Contains(item)) { err.Add(item); } } foreach (DataColumn item in ds.Tables[0].Columns) { if (!ts.Contains(item.ColumnName)) { err2.Add(item.ColumnName); } } #endregion WriteLog("同步" + mt.ts.TableName + "(检查数据完成)"); //开始调用web服务 if (err.Count > 0) { bll.AddLog(string.Format("同步表:{0},发生异常,缺少字段:{1}", mt.ts.TableName, string.Join(",", err)), 0); } //开始调用web服务 if (err2.Count > 0) { bll.AddLog(string.Format("同步表:{0},发生异常,多余字段:{1}", mt.ts.TableName, string.Join(",", err2)), 0); } else { if (!ds.Tables[0].Columns.Contains("iden")) { var colu = new DataColumn("iden", typeof(int)); colu.DefaultValue = int.Parse(EnterpriseID); ds.Tables[0].Columns.Add(colu); } bll.Add(mt.ts, BLL.Utils.GetZipBytesByDataSet(ds), key); } //本地日志 WriteLog("同步" + mt.ts.TableName + "(" + ds.Tables[0].Rows.Count + "条记录) :成功"); } else { WriteLog("同步" + mt.ts.TableName + "(0条记录)"); } } else { WriteLog("同步" + mt.ts.TableName + "(sql查询语句异常)"); } } } catch (Exception ex) { //本地日志 WriteLog("同步" + mt.ts.TableName + " :" + ex.Message); } this.mt[mt.i].locked = false; this.mt[mt.i].Start(); } }