Как завершить поток? - C#

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

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

Проблема в том, что создается поток, который нужно завершить нажатием кнопки
public void button1_Click(object sender, EventArgs e)
        {
 
            Thread Thread = new Thread(server_tcp) { IsBackground = true };
            
            Thread.Start();
            
            //abort(Thread);
 
            //Thread MyThread = new Thread(server_tcp);
            //MyThread.Start();
        }
Создался поток Нужно завершить
public void button2_Click(object sender, EventArgs e)
        {
            Thread.Abort();
            Thread.Join();
        }
Так не работает, вызывается ошибка, что делать?

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

textual
Листинг программы
namespace Nya.ExitThread
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var tokenSource = new CancellationTokenSource())
            {
                var thread = new Thread(new ParameterizedThreadStart((parameter) => {
                    var token = (CancellationToken)parameter;
                    while (!token.IsCancellationRequested)
                    {
                        Thread.Sleep(5000);
                        if (token.IsCancellationRequested)
                            break;
                        else
                            Console.WriteLine("Nya! {0}", DateTime.Now);
                    }
                }));
                thread.Start(tokenSource.Token);
 
                while (Console.ReadLine() != "exit")
                    ;
                tokenSource.Cancel();
                thread.Join();
 
            }
 
            Console.WriteLine("program stoped!");
            Console.ReadKey();
        }
    }
}

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


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

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

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