Как завершить поток? - 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();
}
}
}