.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 в отдельном потоке
            }
            //При этом, изначально запущенный поток как существовал, так и продолжает существовать и работать
        }
    }

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


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

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

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