Не могу получить ветку, чтобы остановиться через кнопку в 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 ... d-winforms

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