.NET 4.x Прервать несколько потоков - C#
Формулировка задачи:
Доброго времени суток уважаемые!
Подскажите пожалуйста, как правильно решить следующую задачу: выполнить некоторый метод в разных, не зависимых друг от друга потоках. Потом при необходимости, в какой-то момент времени эти потоки максимально быстро прервать/убить (и вынести их трупы куда-нибудь подальше ), потом, в какой-то момент времени запустить новые потоки... и т.д.
Интересует максимально простой пример, по возможности с комментариями. Спасибо.
Решение задачи: «.NET 4.x Прервать несколько потоков»
textual
Листинг программы
private void Form1_Load(object sender, EventArgs e)
{
Task[] tasks = {
//Запускам поток, который нам будет бесконечно генерировать MessageBox'ы
Task.Factory.StartNew(()=>{ // <-- поток который нужно полностью ликвидировать, по прошествии 5-и секунд, не зависимо от
while (true)
{
MessageBox.Show("I am a Task!"); //Этот MessageBox будет появляться вечно
Thread.Sleep(1000);
}
})
};
Task.WaitAll(tasks, 5000); //Вешаем программу на 5 секунд
for (int i = 0; i < 3; i++)
{
Task.Factory.StartNew(() => { MessageBox.Show("I am a Task 2"); }); //Запускаем новый MessageBox в отдельном потоке
}
//При этом, изначально запущенный поток как существовал, так и продолжает существовать и работать
}
}