CancellationToken
是 .NET 中用于请求取消操作的一个对象。它通常与 Task
结合使用,以便在长时间运行的任务中可以响应取消请求。
Task.Delay
是一个返回 Task
的方法,它会在指定的时间后完成。
TaskCanceledException
是当一个 Task
被取消时抛出的异常。
使用 CancellationToken
和 Task.Delay
的组合可以有效地管理长时间运行的任务,允许用户在不需要结果时提前终止任务,从而节省系统资源。
CancellationToken
实例。Task
。Task
被取消时抛出的异常。在键盘事件中使用 CancellationToken
调用 Task.Delay
的场景可能包括:
在键盘事件中使用 CancellationToken
调用 Task.Delay
时可能会遇到 TaskCanceledException
。
当 CancellationToken
被取消时,所有依赖于该 CancellationToken
的 Task
都会被取消,并抛出 TaskCanceledException
。
为了处理这种情况,可以在调用 Task.Delay
时捕获 TaskCanceledException
,并根据需要进行处理。以下是一个示例代码:
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
CancellationTokenSource cts = new CancellationTokenSource();
// 模拟键盘事件触发取消操作
Console.WriteLine("Press 'C' to cancel the task.");
var key = Console.ReadKey().KeyChar;
if (key == 'C')
{
cts.Cancel();
}
try
{
await Task.Delay(5000, cts.Token); // 等待5秒
Console.WriteLine("Task completed.");
}
catch (TaskCanceledException)
{
Console.WriteLine("Task was canceled.");
}
}
}
通过这种方式,可以在键盘事件中使用 CancellationToken
调用 Task.Delay
,并在任务被取消时优雅地处理 TaskCanceledException
。
领取专属 10元无门槛券
手把手带您无忧上云