Извините за то, что, вероятно, является простым ответом, но я потратил пару часов, просматривая документацию и не могу заставить мой код, работая так, как я думаю, он должен работать, я не использовал C# в годы, что не помогает. он запускает /останавливается с кнопкой. Остановите. Я хотел бы учиться, хотя. Заранее спасибо, если вы сделали это так далеко!
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