Убить предыдущий поток перед запуском нового - C#

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

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

private void button3_Click(object sender, EventArgs e)
        {
            myThread= new Thread(delegate()
                {
                    citate_function();   
                }); myThread.Start();
          
        }
При втором нажатии на кнопку, создается еще один поток, который работает вместе с первым. Как убить предыдущий поток, и начать новый? Может, как-то проверку делать и уничтожать? Глобальную переменную очень не хочется.

Решение задачи: «Убить предыдущий поток перед запуском нового»

textual
Листинг программы
using System;
using System.ComponentModel;
using System.Threading;
 
namespace ConsoleApplication86
{
    class Program
    {
        static void Main()
        {
            var bw = new BackgroundWorker(){WorkerSupportsCancellation = true};
            bw.DoWork += (sender, e) =>
                         {
                             var worker = (BackgroundWorker) sender;
                             var random = new Random();
                             while (!worker.CancellationPending)
                             {
                                 Console.WriteLine(random.Next());
                                 Thread.Sleep(500);
                             }
                             Console.WriteLine("Finish");
                         };
            for (;;)
            {
                Console.WriteLine("Нажмите любую клавишу чтобы начать");
                Console.ReadKey();
                bw.RunWorkerAsync();
                Console.WriteLine("Нажмите любую клавишу чтобы закончить");
                Console.ReadKey();
                bw.CancelAsync();
            }
        }
    }
}

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


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

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

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