Завершить поток - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. подскажите, как правильно остановить и завершить поток. В приложении WPF в одной кнопке выполняется следующий код
        private void Go_Click(object sender, RoutedEventArgs e)
        {
            (new Thread(delegate () 
            {
                 //код
            })).Start();
            
        }
Нужно чтобы после выполнения кода поток завершался и чтобы была другая кнопка, при нажатии на кнопку поток принудительно останавливался.

Решение задачи: «Завершить поток»

textual
Листинг программы
/// <summary>
        /// Поле для потока периодических запросов статуса пользовательской задачи
        /// </summary>
        private Thread threadTaskCircler;
 
        /// <summary>
        /// Метод изменения флага периодического опроса пользовательской задачи
        /// </summary>
        /// <param name="circler">значение флага опроса</param>
        private void TaskCirclerModed(bool circler)
        {
            if (!circler) {                                                                         //если произошел сброс флага..
                if (threadTaskCircler != null)                                                      //..если поток существует..
                    if (threadTaskCircler.IsAlive)                                                  //....если поток жив..
                        threadTaskCircler.Abort();                                                  //......прерывание потока
            }
            else {                                                                                  //если произошла установка флага..     
                if (threadTaskCircler != null && threadTaskCircler.IsAlive)                         //..если поток существует и выполняется..
                    return;                                                                         //....прерывание работы метода
                threadTaskCircler = new Thread(TaskProcessing);                                     //..создание потока периодического опроса
                threadTaskCircler.Name = "Controller_Circler";                                      //..установка ему имени
                threadTaskCircler.IsBackground = true;                                              //..завершение потока при закрытии программы
                threadTaskCircler.Start();                                                          //..запуск потока
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5
Похожие ответы