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; } }
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; } }