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