Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Остановить поток в C#

1.8K
05 сентября 2018 года
alcatraz_kms
148 / / 01.10.2013
здрасти юзаю backgroundWorker при поиске файлов, и проблема не получается его остановить
вот код где выполняется поиск файлов
Код:
// Начать поиск ...
        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();
        }
Может кто подскажет в чем дело и что нужно изменить в коде, чтоб проблема решилась?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог