📅  最后修改于: 2023-12-03 15:29:48.471000             🧑  作者: Mango
在 C# 中,可以使用 CancellationToken
类来实现异步任务的取消。本文将给出一个简单的 CancellationToken
示例。
下面是一个简单的示例,演示了如何创建一个 CancellationTokenSource
对象,以及如何在异步任务中检查并响应 CancellationToken
。
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
Console.WriteLine("任务开始运行");
CancellationTokenSource cts = new CancellationTokenSource();
// 在一秒钟后取消任务
cts.CancelAfter(1000);
try
{
// 模拟一个耗时的操作
await Task.Run(() =>
{
for (int i = 0; i < 10; i++)
{
Thread.Sleep(100);
// 检查是否有取消请求
cts.Token.ThrowIfCancellationRequested();
}
}, cts.Token);
Console.WriteLine("任务已完成");
}
catch (OperationCanceledException)
{
Console.WriteLine("任务已取消");
}
Console.WriteLine("按任意键退出");
Console.ReadKey();
}
}
首先,我们在 Main
方法中创建了一个 CancellationTokenSource
对象,用于取消异步任务。然后,我们使用 CancelAfter
方法在一定时间后自动取消任务。
接着,我们使用 Task.Run
方法创建了一个异步任务,它会模拟一个耗时的操作。在该任务中,我们使用 Thread.Sleep
方法来模拟等待,然后使用 cts.Token.ThrowIfCancellationRequested
检查是否有取消请求。
最后,我们使用 try-catch
块捕获 OperationCanceledException
异常,以响应取消请求。
运行上述代码示例,可以得到以下输出:
任务开始运行
任务已取消
按任意键退出
可以看到,任务在一秒钟后被取消了,并输出了相应的提示信息。