private async Task <bool> Update_A_Row(DP6SQLROW row)
 {
     return(await((Func <Task <bool> >)(() =>
     {
         return Task.Run(() =>
         {
             try
             {
                 string[] arrField = new string[1];
                 string[] arrValue = new string[1];
                 OraDB oraDB = new OraDB("qwer", "sfcabar", "sfcabar*168");
                 string tablename = "sfcdata.barautbind";
                 if (oraDB.isConnect())
                 {
                     IsTCPConnect = true;
                     arrField[0] = "SCBARCODE";
                     arrValue[0] = row.Bar;
                     DataSet s = oraDB.selectSQL(tablename.ToUpper(), arrField, arrValue);
                     SinglDt = s.Tables[0];
                     if (SinglDt.Rows.Count == 0)
                     {
                         MsgText = AddMessage("未查询到 " + row.Bar + " 信息");
                         oraDB.disconnect();
                         return false;
                     }
                     else
                     {
                         string[,] arrFieldAndNewValue = { { "BLDATE", ("to_date('" + row.BLDATE + "', 'yyyy/mm/dd hh24:mi:ss')").ToUpper() }, { "BLID", row.BLID }, { "BLNAME", row.BLNAME }, { "BLUID", row.BLUID }, { "BLMID", row.BLMID } };
                         string[,] arrFieldAndOldValue = { { "SCBARCODE", row.Bar } };
                         oraDB.updateSQL2(tablename.ToUpper(), arrFieldAndNewValue, arrFieldAndOldValue);
                         s = oraDB.selectSQL(tablename.ToUpper(), arrField, arrValue);
                         SinglDt = s.Tables[0];
                         oraDB.disconnect();
                         MsgText = AddMessage("条码 " + row.Bar + " 已更新");
                         return true;
                     }
                 }
                 else
                 {
                     IsTCPConnect = false;
                     MsgText = AddMessage("数据库链接失败");
                     return false;
                 }
             }
             catch (Exception ex)
             {
                 IsTCPConnect = false;
                 MsgText = AddMessage("数据插入失败: " + ex.Message);
                 Console.WriteLine(ex.Message);
                 return false;
             }
         }
                         );
     }))());
 }
        private async void ReUpLoad()
        {
            DataTable dt = new DataTable();
            DataTable dt1;

            dt.Columns.Add("BLDATE", typeof(string));
            dt.Columns.Add("BLID", typeof(string));
            dt.Columns.Add("BLNAME", typeof(string));
            dt.Columns.Add("BLUID", typeof(string));
            dt.Columns.Add("BLMID", typeof(string));
            dt.Columns.Add("Bar", typeof(string));
            string filename = @"D:\NotUpdate.csv";

            UpdateCount = 0;
            if (File.Exists(filename))
            {
                dt1 = Csvfile.GetFromCsv(filename, 1, dt);
                if (dt1.Rows.Count > 0)
                {
                    File.Delete(filename);
                    foreach (DataRow item in dt1.Rows)
                    {
                        DP6SQLROW dP6SQLROW = new DP6SQLROW();
                        dP6SQLROW.BLDATE = item[0].ToString();
                        dP6SQLROW.BLID   = item[1].ToString();
                        dP6SQLROW.BLMID  = item[4].ToString();
                        dP6SQLROW.BLNAME = item[2].ToString();
                        dP6SQLROW.BLUID  = item[3].ToString();
                        dP6SQLROW.Bar    = item[5].ToString();
                        bool r;
                        using (var releaser = await m_lock.LockAsync())
                        {
                            r = await Update_A_Row(dP6SQLROW);
                        }
                        if (r)//更具是否上传成功,写入不同的记录文档
                        {
                            lock (DisEq)
                            {
                                _BarcodeRecord.Enqueue(dP6SQLROW);
                            }
                            WriteRecordtoExcel(dP6SQLROW, true);
                            UpdateCount++;
                            //上传成功
                        }
                        else
                        {
                            WriteRecordtoExcel(dP6SQLROW, false);
                            //上传失败
                        }
                    }
                }
            }
            LastReUpdateStr = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
            Inifile.INIWriteValue(iniParameterPath, "ReUpLoad", "LastReUpdateStr", LastReUpdateStr);
        }
        private void LoadBarCsvFromFile()
        {
            DataTable dt = new DataTable();
            DataTable dt1;

            dt.Columns.Add("BLDATE", typeof(string));
            dt.Columns.Add("BLID", typeof(string));
            dt.Columns.Add("BLNAME", typeof(string));
            dt.Columns.Add("BLUID", typeof(string));
            dt.Columns.Add("BLMID", typeof(string));
            dt.Columns.Add("Bar", typeof(string));
            string bcstr    = GetBanci();
            string filename = @"D:\Record\" + bcstr + ".csv";

            try
            {
                if (File.Exists(filename))
                {
                    dt1 = Csvfile.GetFromCsv(filename, 1, dt);
                    if (dt1.Rows.Count > 0)
                    {
                        foreach (DataRow item in dt1.Rows)
                        {
                            DP6SQLROW dp6 = new DP6SQLROW();
                            dp6.BLDATE = item[0].ToString();
                            dp6.BLID   = item[1].ToString();
                            dp6.BLNAME = item[2].ToString();
                            dp6.BLUID  = item[3].ToString();
                            dp6.BLMID  = item[4].ToString();
                            dp6.Bar    = item[5].ToString();
                            lock (DisEq)
                            {
                                _BarcodeRecord.Enqueue(dp6);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MsgText = AddMessage(ex.Message);
            }
        }
 /// <summary>
 /// 脚本执行完,给PLC赋值
 /// </summary>
 private async void hcInspectCallback()
 {
     lock (PlcRW)
     {
         //给PLC置位
         aS300ModbusTCP.WriteSigleCoil("M5001", true);
     }
     if (true)//更具找到的条码,上传数据
     {
         DP6SQLROW dP6SQLROW = new DP6SQLROW();
         dP6SQLROW.BLDATE = DateTime.Now.ToString();
         dP6SQLROW.BLID   = BLID;
         dP6SQLROW.BLMID  = BLMID;
         dP6SQLROW.BLNAME = BLNAME;
         dP6SQLROW.BLUID  = BLUID;
         dP6SQLROW.Bar    = "123";
         bool r;
         using (var releaser = await m_lock.LockAsync())
         {
             r = await Update_A_Row(dP6SQLROW);
         }
         if (r)//更具是否上传成功,写入不同的记录文档
         {
             lock (DisEq)
             {
                 _BarcodeRecord.Enqueue(dP6SQLROW);
             }
             WriteRecordtoExcel(dP6SQLROW, true);
             //上传成功
         }
         else
         {
             WriteRecordtoExcel(dP6SQLROW, false);
             //上传失败
         }
     }
 }
        private void WriteRecordtoExcel(DP6SQLROW dP6SQLROW, bool flag)
        {
            string bcstr    = GetBanci();
            string filename = @"D:\Record\" + bcstr + ".csv";

            if (!flag)
            {
                filename = @"D:\NotUpdate.csv";
            }
            try
            {
                if (!File.Exists(filename))
                {
                    string[] heads = { "BLDATE", "BLID", "BLNAME", "BLUID", "BLMID", "Bar" };
                    Csvfile.AddNewLine(filename, heads);
                }
                string[] conte = { dP6SQLROW.BLDATE, dP6SQLROW.BLID, dP6SQLROW.BLNAME, dP6SQLROW.BLUID, dP6SQLROW.BLMID, dP6SQLROW.Bar };
                Csvfile.AddNewLine(filename, conte);
            }
            catch (Exception ex)
            {
                MsgText = AddMessage(ex.Message);
            }
        }