コード例 #1
0
        private void ParseButton_Click(object sender, EventArgs e)
        {
            switch (ParseButton.Text)
            {
                case "Parse":
                    CsvReaderWriter crw = new CsvReaderWriter(FilePath_textBox.Text, requester.GetResultPath());
                    parsing_progressBar.Value = 0;
                    parsing_progressBar.Maximum = crw.getMax();
                    for (int i = 0; i < Streams_numericUpDown.Value; i++)
                    {
                        Thread t = new Thread(delegate ()
                        {
                            while (true)
                            {
                                string source;

                                lock (crw) { source = crw.getNextSource(); }

                                if (source == null) { MessageBox.Show("Done!"); break; }
                                ParsedResult parsedResult = requester.Parse(source);
                                Progress_Label.Invoke(new Action(() =>
                                {
                                    parsing_progressBar.Value++;
                                    Progress_Label.Text = parsing_progressBar.Value.ToString() + "/" + parsing_progressBar.Maximum.ToString();
                                    TimeLeft_label.Text = getLeftTime();
                                }));

                                lock (crw) { crw.insertParsed(parsedResult); }

                                Thread.Sleep((int)Time_Out_numericUpDown.Value * 1000);
                            }

                        });
                        t.Start();
                        threads.Add(t);
                    }
                    break;
                case "Pause":
                    foreach (var item in threads)
                    {
                        if (item.IsAlive) item.
                    }
                    break;
                case "Continue":

                    break;
                default:
                    break;
            }
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: nwcPadme/YalantisMarketing
        private void ParseButton_Click(object sender, EventArgs e)
        {
            switch (ParseButton.Text)
            {
            case "Start":
                bool write_headers = true;
                if (radioButton3.Checked)
                {
                    if ((!Da_pa_checkbox.Checked && !Cf_tf_checkbox.Checked))
                    {
                        MessageBox.Show("Выберете хоть одну метрику!");
                        return;
                    }
                    write_headers = false;
                }
                isparsedtoken = true;
                crw           =
                    new CsvReaderWriter(ParseFilePath_textBox.Text, parserequester.GetResultPath(), Da_pa_checkbox.Checked, Cf_tf_checkbox.Checked, write_headers, false);
                parsing_progressBar.Value   = 0;
                parsing_progressBar.Maximum = crw.getMax();
                for (int i = 0; i < Streams_numericUpDown.Value; i++)
                {
                    Thread t = new Thread(delegate()
                    {
                        while (true)
                        {
                            if (isparsedtoken)
                            {
                                string source;

                                lock (crw) { source = crw.getNextSource(); }

                                if (source == null)
                                {
                                    CancelButton.Invoke(new Action(() =>
                                    {
                                        ParseButton.Text = "Start";
                                        isparsedtoken    = false;
                                    }));
                                    break;
                                }
                                ParsedResult parsedResult = parserequester.Parse(source);
                                if (Da_pa_checkbox.Checked || Cf_tf_checkbox.Checked)
                                {
                                    parserequester.getDA_PA(source, parsedResult);
                                }
                                Progress_Label.Invoke(new Action(() =>
                                {
                                    parsing_progressBar.Value++;
                                    Progress_Label.Text = parsing_progressBar.Value.ToString() + "/" + parsing_progressBar.Maximum.ToString();
                                    TimeLeft_label.Text = getLeftTime((int)Time_Out_numericUpDown.Value, (int)Streams_numericUpDown.Value);
                                }));
                                Thread.Sleep((int)Time_Out_numericUpDown.Value * 1000);
                                lock (crw) { crw.insertParsed(parsedResult); }
                            }
                        }
                    });
                    t.Start();
                    threads.Add(t);
                }
                ParseButton.Text     = "Pause";
                CancelButton.Enabled = true;
                break;

            case "Pause":
                isparsedtoken    = false;
                ParseButton.Text = "Continue";
                break;

            case "Continue":
                isparsedtoken    = true;
                ParseButton.Text = "Pause";
                break;

            default:
                break;
            }
        }