Остановить поток в C#
вот код где выполняется поиск файлов
Код:
// Начать поиск ...
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
label10.Visible = true;
button1.Enabled = false;
t_file.Enabled = false;
label10.Text = "В процессе ...";
label10.ForeColor = Color.OrangeRed;
label5.Enabled = false; label6.Enabled = false; label7.Enabled = false; label8.Enabled = false;
backgroundWorker1.RunWorkerAsync(a); //запуск backgroundWorker1
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) // визуальное добавление найденых адресов файлов в листбокс
{
foreach (string pth in listBox2.Items)
{
string a = pth.ToString();
string fil = t_file.Text;
string[] allFoundFiles = Directory.GetFiles(a, fil, SearchOption.AllDirectories);
foreach (string file in allFoundFiles)
{
dataGridView1.Invoke(new MethodInvoker(() => dataGridView1.Rows.Add(file))); // добавление файлов в datagridview
Thread.Sleep(100); // пауза
}
}
Invoke(new Action(() =>
{
label10.Text = "Выполнено";
label10.ForeColor = Color.Green;
button1.Enabled = true;
t_file.Enabled = true;
label5.Enabled = true; label6.Enabled = true; label7.Enabled = true; label8.Enabled = true;
}));
}
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.Rows.Clear();
label10.Visible = true;
button1.Enabled = false;
t_file.Enabled = false;
label10.Text = "В процессе ...";
label10.ForeColor = Color.OrangeRed;
label5.Enabled = false; label6.Enabled = false; label7.Enabled = false; label8.Enabled = false;
backgroundWorker1.RunWorkerAsync(a); //запуск backgroundWorker1
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) // визуальное добавление найденых адресов файлов в листбокс
{
foreach (string pth in listBox2.Items)
{
string a = pth.ToString();
string fil = t_file.Text;
string[] allFoundFiles = Directory.GetFiles(a, fil, SearchOption.AllDirectories);
foreach (string file in allFoundFiles)
{
dataGridView1.Invoke(new MethodInvoker(() => dataGridView1.Rows.Add(file))); // добавление файлов в datagridview
Thread.Sleep(100); // пауза
}
}
Invoke(new Action(() =>
{
label10.Text = "Выполнено";
label10.ForeColor = Color.Green;
button1.Enabled = true;
t_file.Enabled = true;
label5.Enabled = true; label6.Enabled = true; label7.Enabled = true; label8.Enabled = true;
}));
}
Код:
// Стоп поиск ...
private void button5_Click(object sender, EventArgs e)
{
backgroundWorker1.WorkerSupportsCancellation = true;
backgroundWorker1.CancelAsync();
backgroundWorker1.Dispose();
}
private void button5_Click(object sender, EventArgs e)
{
backgroundWorker1.WorkerSupportsCancellation = true;
backgroundWorker1.CancelAsync();
backgroundWorker1.Dispose();
}