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

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

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

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

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

textual
Листинг программы
  1. /// <summary>
  2.         /// Поле для потока периодических запросов статуса пользовательской задачи
  3.         /// </summary>
  4.         private Thread threadTaskCircler;
  5.  
  6.         /// <summary>
  7.         /// Метод изменения флага периодического опроса пользовательской задачи
  8.         /// </summary>
  9.         /// <param name="circler">значение флага опроса</param>
  10.         private void TaskCirclerModed(bool circler)
  11.         {
  12.             if (!circler) {                                                                         //если произошел сброс флага..
  13.                 if (threadTaskCircler != null)                                                      //..если поток существует..
  14.                     if (threadTaskCircler.IsAlive)                                                  //....если поток жив..
  15.                         threadTaskCircler.Abort();                                                  //......прерывание потока
  16.             }
  17.             else {                                                                                  //если произошла установка флага..    
  18.                 if (threadTaskCircler != null && threadTaskCircler.IsAlive)                         //..если поток существует и выполняется..
  19.                     return;                                                                         //....прерывание работы метода
  20.                 threadTaskCircler = new Thread(TaskProcessing);                                     //..создание потока периодического опроса
  21.                 threadTaskCircler.Name = "Controller_Circler";                                      //..установка ему имени
  22.                 threadTaskCircler.IsBackground = true;                                              //..завершение потока при закрытии программы
  23.                 threadTaskCircler.Start();                                                          //..запуск потока
  24.             }
  25.         }

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


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

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

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы