c#task如何使用外部按钮触发task进程结束

task按钮在循环执行某项任务,如何使用另一个按钮结束当前的task任务

在 C# 中使用 Task 类来执行异步操作时,你可以使用 CancellationTokenSource 来中断当前正在运行的 Task。CancellationTokenSource 提供了一个 Cancel() 方法,你可以在任何时候调用它来中断当前的 Task。

举个例子:

创建一个 CancellationTokenSource 实例, 然后将其传递给 Task.Run() 方法。

CancellationTokenSource cts = new CancellationTokenSource();
Task task = Task.Run(() => {
    // 循环任务
    while (!cts.Token.IsCancellationRequested) {
        // Do work
        // check if cancel
    }
    cts.Token.ThrowIfCancellationRequested();
}, cts.Token);

2.在按钮点击事件中调用 CancellationTokenSource 实例的 Cancel() 方法来结束 task 任务.

private void btnStop_Click(object sender, EventArgs e)
{
    cts.Cancel();
}

当任务结束时,它会抛出 OperationCanceledException 异常,你可以在 Task 的 catch 部分进行处理

try {
    task.Wait();
} catch (OperationCanceledException) {
    // Handle cancel
}

如果任务是循环任务,那么建议在循环中加入检查是否取消的判断,这样可以保证任务在最短的时间内结束。