Не могу получить ветку, чтобы остановиться через кнопку в C# WinformsC#

Место общения программистов C#
Anonymous
Не могу получить ветку, чтобы остановиться через кнопку в C# Winforms

Сообщение Anonymous »

Извините за то, что, вероятно, является простым ответом, но я потратил пару часов, просматривая документацию и не могу заставить мой код, работая так, как я думаю, он должен работать, я не использовал C# в годы, что не помогает. он запускает /останавливается с кнопкой. Остановите. Я хотел бы учиться, хотя. Заранее спасибо, если вы сделали это так далеко! < /P>
private void btn_start_Click(object sender, EventArgs e)
{
using var cts = _cts = new();
try
{

Thread thread = new(() => serialserver(_cts.Token));
thread.Start();

}
catch
{

}
btn_start.Enabled = false;
btn_stop.Enabled = true;
}

public void serialserver(CancellationToken token)
{
Invoke((MethodInvoker)(() => txtbox_log.AppendText("Serial Server Started")));
Invoke((MethodInvoker)(() => txtbox_log.AppendText(Environment.NewLine)));
while (!token.IsCancellationRequested)
{

Invoke((MethodInvoker)(() => txtbox_log.AppendText("TEST! I'm running")));
Invoke((MethodInvoker)(() => txtbox_log.AppendText(Environment.NewLine)));
Thread.Sleep(2500);

// do some more serial stuff here
}
Invoke((MethodInvoker)(() => txtbox_log.AppendText("Serial Server Stopped")));
Invoke((MethodInvoker)(() => txtbox_log.AppendText(Environment.NewLine)));
}

private void btn_stop_Click(object sender, EventArgs e)
{

_cts!.Cancel();
_cts = null;

btn_start.Enabled = true;
btn_stop.Enabled = false;
}


Подробнее здесь: https://stackoverflow.com/questions/795 ... p-winforms

Вернуться в «C#»