示例#1
0
 /// <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);
     }
 }
示例#2
0
        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();
            }
        }