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