private void DataToDB() { List <Task> tasks = new List <Task>(); while (!readFinished || (QueueDUTs.Count > 0)) { if (QueueDUTs.Count != 0) { DUT_Str dut = QueueDUTs.Dequeue(); Task t = new Task(() => { //connect to db MySQLUtil db = new MySQLUtil(); db.connect(); if (db.insert_into_table(dut)) { string str = String.Format("ADD: {0,-20} {1, -6} {2, -10} {3, -5} {4, -20}", dut.SerailNumber, dut.ErrorCode, dut.PartType, dut.IDDValue, dut.TestTime); Trace.WriteLine(str); //File.Move(logsFilePath.ToString() + @"\" + file.Name, directoryInfoAchieved.ToString() + @"\" + file.Name); //System.Threading.Thread.Sleep(100); } else { Trace.WriteLine("Insert Into Table Error: " + db.LastError); } //disconnet db.disconnect(); }); t.Start(); tasks.Add(t); } } Task.WaitAll(tasks.ToArray()); }
private void ParseFile(object directoryInfo) { //ThreadPool.SetMaxThreads(30, 30); //FileIOPermission fileIOPerm1 = new FileIOPermission(FileIOPermissionAccess.AllAccess, di.FullName); //fileIOPerm1.AllFiles = FileIOPermissionAccess.Read; Stack <DirectoryInfo> pending = new Stack <DirectoryInfo>(); pending.Push((DirectoryInfo)directoryInfo); Trace.WriteLine("working...."); List <Task> tasks = new List <Task>(); while (pending.Count != 0) { DirectoryInfo path = pending.Pop(); FileInfo[] files = null; try { files = path.GetFiles(); fileNumer += files.Length; } catch (Exception ex) { Trace.WriteLine("Get FIles Error: " + ex.Message); } if (files != null && files.Length != 0) { //add one task for one folder, not for one file. Task t = new Task(() => { foreach (FileInfo file in files) { //Trace.WriteLine("file: " + file.Name); if (validateFile(file)) { //parse xml XmlReadLogs xmlread = new XmlReadLogs(); DUT_Str dut = xmlread.read(file.FullName); if (dut.SerailNumber != "") { lock (QueueDUTs) { QueueDUTs.Enqueue(dut); } } } else { //Trace.WriteLine("Invalid file: " + file.FullName); } } }); t.Start(); tasks.Add(t); } try { DirectoryInfo[] directorys = path.GetDirectories(); foreach (DirectoryInfo subdir in directorys) { pending.Push(subdir); } } catch (Exception ex) { Trace.WriteLine("Get Directories Error: " + ex.Message); } } Task.WaitAll(tasks.ToArray()); readFinished = true; //Trace.WriteLine("Search Finished"); }
public bool insert_into_table(DUT_Str dut) { try { MySql.Data.MySqlClient.MySqlDataReader myData; string dut_id = "0"; //get dut_id from serial_number and test_time. bool dataExist = false; cmd.CommandText = string.Format("SELECT Id FROM dut WHERE SerialNumber='{0}' AND TestTime='{1}'", dut.SerailNumber, dut.TestTime); myData = cmd.ExecuteReader(); while (myData.Read()) { //Trace.WriteLine("DUT ID: ", myData[0].ToString()); dut_id = myData[0].ToString(); dataExist = true; } myData.Close(); if (dataExist) { LastError = "DUT already exists"; return(false); } //foreach (string rawCount in dut.RawCountX) //{ // string SQL_insert_query = string.Format("INSERT INTO rawcountaverage (DUTID, ValueIndex, RawCountAverage) VALUES ({0},{1},{2})", dut_id, index, rawCount); // index++; // cmd.CommandText = SQL_insert_query; // cmd.ExecuteNonQuery(); //} //index = 1; //foreach (string noise in dut.NoiseX) //{ // string SQL_insert_query = string.Format("INSERT INTO rawcountnoise (DUTID, ValueIndex, RawCountNoise) VALUES ({0},{1},{2})", dut_id, index, noise); // index++; // cmd.CommandText = SQL_insert_query; // cmd.ExecuteNonQuery(); //} //index = 1; //foreach (string idac in dut.IDAC) //{ // string SQL_insert_query = string.Format("INSERT INTO idacvalue (DUTID, ValueIndex, IDACValue) VALUES ({0},{1},{2})", dut_id, index, idac); // index++; // cmd.CommandText = SQL_insert_query; // cmd.ExecuteNonQuery(); //} //insert into dut table. string SQL_insert_query_dut = "INSERT INTO dut (SerialNumber,TestStation,PartType,ErrorCode,IDDValue,FirmwareVersion,TestTime) "; SQL_insert_query_dut += "VALUES ('" + dut.SerailNumber + "'," + "'" + dut.TestStation + "'," + "'" + dut.PartType + "'," + dut.ErrorCode + "," + dut.IDDValue + "," + dut.FwRev + ",'" + dut.TestTime + "')"; cmd.CommandText = SQL_insert_query_dut; cmd.ExecuteNonQuery(); //get DUTid from current record cmd.CommandText = string.Format("SELECT Id FROM dut WHERE SerialNumber='{0}' AND TestTime='{1}'", dut.SerailNumber, dut.TestTime); myData = cmd.ExecuteReader(); while (myData.Read()) { //Trace.WriteLine("DUT ID: ", myData[0].ToString()); dut_id = myData[0].ToString(); } myData.Close(); int index; //insert RawCount Value if (dut.RawCountX.Capacity > 0) { index = 1; string SQL_insert_query_rawcount = "INSERT INTO rawcountaverage (DUTID, ValueIndex, RawCountAverage) VALUES "; foreach (string rawcount in dut.RawCountX) { SQL_insert_query_rawcount += "(" + dut_id + "," + index.ToString() + "," + rawcount + "),"; index++; } SQL_insert_query_rawcount = SQL_insert_query_rawcount.Substring(0, SQL_insert_query_rawcount.Length - 1); SQL_insert_query_rawcount += ";"; //Trace.WriteLine(SQL_insert_query_rawcount); cmd.CommandText = SQL_insert_query_rawcount; cmd.ExecuteNonQuery(); } //insert Noise Value if (dut.NoiseX.Capacity > 0) { index = 1; string SQL_insert_query_noise = "INSERT INTO rawcountnoise (DUTID, ValueIndex, RawCountNoise) VALUES "; foreach (string noise in dut.NoiseX) { SQL_insert_query_noise += "(" + dut_id + "," + index.ToString() + "," + noise + "),"; index++; } SQL_insert_query_noise = SQL_insert_query_noise.Substring(0, SQL_insert_query_noise.Length - 1); SQL_insert_query_noise += ";"; //Trace.WriteLine(SQL_insert_query_noise); cmd.CommandText = SQL_insert_query_noise; cmd.ExecuteNonQuery(); } //insert IDAC Value if (dut.IDAC.Capacity > 0) { index = 1; string SQL_insert_query_idac = "INSERT INTO idacvalue (DUTID, ValueIndex, IDACValue) VALUES "; foreach (string idac in dut.IDAC) { SQL_insert_query_idac += "(" + dut_id + "," + index.ToString() + "," + idac + "),"; index++; } SQL_insert_query_idac = SQL_insert_query_idac.Substring(0, SQL_insert_query_idac.Length - 1); SQL_insert_query_idac += ";"; //Trace.WriteLine(SQL_insert_query_idac); cmd.CommandText = SQL_insert_query_idac; cmd.ExecuteNonQuery(); } return(true); } catch (Exception ex) { LastError = ex.Message; Trace.WriteLine(ex.Message); return(false); } }