internal object do_work(string p, DataSet value) { DataSet answer_value = new DataSet(); switch (p) { case "синхронізація": try { return(synchronization(value)); } catch (Exception exp) { MessageBox.Show(exp.Message); return(null); } case "Рецепт": string mesage_from_answer = string.Empty; if (status_server.BackColor != Color.Green) { mesage_from_answer = "Помилка"; } if (com_test.BackColor != Color.Green) { mesage_from_answer = "Помилка"; } if (bd_status.BackColor != Color.Green) { mesage_from_answer = "Помилка"; } if (value == null) { mesage_from_answer = "Помилка"; } if (mesage_from_answer == string.Empty) { if (controler_work == true) { mesage_from_answer = "Рецепт в роботі"; } else { controler_work = open_do_form(value); if (controler_work == true) { mesage_from_answer = "Отримав Рецепт"; } else { mesage_from_answer = "Помилка"; } } } answer_value.DataSetName = mesage_from_answer; return(answer_value); case "Заміна рецепту": controler_work = close_do_form(); Thread.Sleep(100); controler_work = open_do_form(value); mesage_from_answer = "Отримав Рецепт"; answer_value.DataSetName = mesage_from_answer; return(answer_value); case "Зважування": try { DataTable_create table = new DataTable_create(); DataTable real_data = table.number(); DataRow row = real_data.NewRow(); row["start"] = zamis.start; row["do_zamis"] = zamis.do_zamis; row["remainder"] = zamis.remainder; row["part_name"] = zamis.part_name; real_data.Rows.Add(row.ItemArray); answer_value.Tables.Add(real_data); mesage_from_answer = "дані зважування"; answer_value.DataSetName = mesage_from_answer; return(answer_value); } catch (Exception exp) { MessageBox.Show(exp.Message); return(null); } default: return(null); } }
private void main_controler() { try { zamis.do_zamis = do_amount.Text; zamis.start = start_amount.Text; zamis.remainder = ned_amount.Text; zamis.part_name = recept.Tables["send_info_from_weight"].Rows[0]["part_name"].ToString(); DataSet insert_data = new DataSet(); DataTable_create table = new DataTable_create(); table_w = table.weighting(); DataTable table_how_much = table.how_much(); DataRow row = table_how_much.NewRow(); DataTable data = (DataTable)recept_show.DataSource; mesage("1. Головий потік Стартанув"); ewh = new EventWaitHandle(false, EventResetMode.AutoReset); workerFirst = new firstRule(ewh, tara, real_wght); ferst_thred = new Thread(workerFirst.DoWork); ferst_thred.IsBackground = true; ferst_thred.Start(); ewh.WaitOne(); mesage("Головний потік дочекався виконання 1 правила "); DateTime start = DateTime.Now; row["name_rec"] = recept.Tables["send_info_from_weight"].Rows[0]["name_rec"]; row["ID_rec"] = recept.Tables["send_info_from_weight"].Rows[0]["ID_rec"]; row["part_name"] = recept.Tables["send_info_from_weight"].Rows[0]["part_name"]; row["ID_part"] = recept.Tables["send_info_from_weight"].Rows[0]["ID_part"]; row["note"] = recept.Tables["send_info_from_weight"].Rows[0]["note"]; row["date_work"] = DateTime.Now; ewh.Reset(); if (stoper != true) { return; } workerTwoo = new secondRule(ewh, recept_show, table_w, real_wght, tara, ned_weight, start, name); twoo_thred = new Thread(workerTwoo.DoWork); twoo_thred.IsBackground = true; twoo_thred.Start(); ewh.WaitOne(); insert_data.Tables.Add(table_w); ewh.Reset(); mesage("Головний потік дочекався виконання 2 правила "); if (stoper != true) { return; } workerfinish = new finishRule(ewh, real_wght, tara, ned_weight); three_thred = new Thread(workerfinish.DoWork); three_thred.IsBackground = true; three_thred.Start(); ewh.WaitOne(); DateTime stop_time = DateTime.Now; object sumObject; sumObject = table_w.Compute("Sum(amount_real)", ""); row["amount"] = Convert.ToDecimal(sumObject); row["time_work"] = subDateTime(start, stop_time); table_how_much.Rows.Add(row.ItemArray); insert_data.Tables.Add(table_how_much); bool save_answer = save_data(insert_data); if (save_answer == true) { if (stoper != true) { return; } if (stoper != true) { insert_data.Clear(); table_w.Clear(); table_how_much.Clear(); increment_data(do_amount, 1); decrement_data(ned_amount); zamis.do_zamis = do_amount.Text; zamis.start = start_amount.Text; zamis.remainder = ned_amount.Text; zamis.part_name = recept.Tables["send_info_from_weight"].Rows[0]["part_name"].ToString(); if (Convert.ToInt32(ned_amount.Text) != 0) { if (Convert.ToInt32(ned_amount.Text) < 3) { set_color(ned_amount, Color.PaleVioletRed); } ewh.Reset(); mesage("Головний потік дочекався виконання 3 правила "); if (stoper != true) { if (analizator_weight != null) { analizator_weight(null, EventArgs.Empty); } mesage("Головний потік викликав знову себе "); } } else { DataTable null_table = (DataTable)recept_show.DataSource; null_table.Clear(); recept_show.DataSource = null_table; end_work(); } } } else { mesage("Дані не записалися в базу"); end_work(); } } catch (Exception exp) { MessageBox.Show(exp.Message); } }