Завершить поток - 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(); //..запуск потока
}
}